static OSST_buffer *new_tape_buffer(int, int, int);
static int enlarge_buffer(OSST_buffer *, int);
static void normalize_buffer(OSST_buffer *);
-static int append_to_buffer(const char *, OSST_buffer *, int);
-static int from_buffer(OSST_buffer *, char *, int);
+static int append_to_buffer(const char __user *, OSST_buffer *, int);
+static int from_buffer(OSST_buffer *, char __user *, int);
static int osst_zero_buffer_tail(OSST_buffer *);
static int osst_copy_to_buffer(OSST_buffer *, unsigned char *);
static int osst_copy_from_buffer(OSST_buffer *, unsigned char *);
/* Entry points to osst */
/* Write command */
-static ssize_t osst_write(struct file * filp, const char * buf, size_t count, loff_t *ppos)
+static ssize_t osst_write(struct file * filp, const char __user * buf, size_t count, loff_t *ppos)
{
ssize_t total, retval = 0;
ssize_t i, do_count, blks, transfer;
int write_threshold;
int doing_write = 0;
- const char * b_point;
+ const char __user * b_point;
Scsi_Request * SRpnt = NULL;
ST_mode * STm;
ST_partstat * STps;
/* Read command */
-static ssize_t osst_read(struct file * filp, char * buf, size_t count, loff_t *ppos)
+static ssize_t osst_read(struct file * filp, char __user * buf, size_t count, loff_t *ppos)
{
ssize_t total, retval = 0;
ssize_t i, transfer;
Scsi_Request * SRpnt = NULL;
OS_Scsi_Tape * STp = file->private_data;
char * name = tape_name(STp);
+ void __user *p = (void __user *)arg;
if (down_interruptible(&STp->lock))
return -ERESTARTSYS;
goto out;
}
- i = copy_from_user((char *) &mtc, (char *)arg, sizeof(struct mtop));
+ i = copy_from_user((char *) &mtc, p, sizeof(struct mtop));
if (i) {
retval = (-EFAULT);
goto out;
STp->drv_buffer != 0)
mt_status.mt_gstat |= GMT_IM_REP_EN(0xffffffff);
- i = copy_to_user((char *)arg, (char *)&mt_status,
- sizeof(struct mtget));
+ i = copy_to_user(p, &mt_status, sizeof(struct mtget));
if (i) {
retval = (-EFAULT);
goto out;
goto out;
}
mt_pos.mt_blkno = blk;
- i = copy_to_user((char *)arg, (char *) (&mt_pos), sizeof(struct mtpos));
+ i = copy_to_user(p, &mt_pos, sizeof(struct mtpos));
if (i)
retval = -EFAULT;
goto out;
up(&STp->lock);
- return scsi_ioctl(STp->device, cmd_in, (void *) arg);
+ return scsi_ioctl(STp->device, cmd_in, p);
out:
if (SRpnt) scsi_release_request(SRpnt);
/* Move data from the user buffer to the tape buffer. Returns zero (success) or
negative error code. */
-static int append_to_buffer(const char *ubp, OSST_buffer *st_bp, int do_count)
+static int append_to_buffer(const char __user *ubp, OSST_buffer *st_bp, int do_count)
{
int i, cnt, res, offset;
/* Move data from the tape buffer to the user buffer. Returns zero (success) or
negative error code. */
-static int from_buffer(OSST_buffer *st_bp, char *ubp, int do_count)
+static int from_buffer(OSST_buffer *st_bp, char __user *ubp, int do_count)
{
int i, cnt, res, offset;