git.openpandora.org
/
pandora-kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branches 'sh/serial-rework' and 'sh/oprofile'
[pandora-kernel.git]
/
block
/
scsi_ioctl.c
diff --git
a/block/scsi_ioctl.c
b/block/scsi_ioctl.c
index
c34272a
..
5963cf9
100644
(file)
--- a/
block/scsi_ioctl.c
+++ b/
block/scsi_ioctl.c
@@
-190,12
+190,11
@@
void blk_set_cmd_filter_defaults(struct blk_cmd_filter *filter)
EXPORT_SYMBOL_GPL(blk_set_cmd_filter_defaults);
static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
EXPORT_SYMBOL_GPL(blk_set_cmd_filter_defaults);
static int blk_fill_sghdr_rq(struct request_queue *q, struct request *rq,
- struct sg_io_hdr *hdr,
struct file *fil
e)
+ struct sg_io_hdr *hdr,
fmode_t mod
e)
{
if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len))
return -EFAULT;
{
if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len))
return -EFAULT;
- if (blk_verify_command(&q->cmd_filter, rq->cmd,
- file->f_mode & FMODE_WRITE))
+ if (blk_verify_command(&q->cmd_filter, rq->cmd, mode & FMODE_WRITE))
return -EPERM;
/*
return -EPERM;
/*
@@
-260,8
+259,8
@@
static int blk_complete_sghdr_rq(struct request *rq, struct sg_io_hdr *hdr,
return r;
}
return r;
}
-static int sg_io(struct
file *file, struct request_queue *q
,
- struct
gendisk *bd_disk, struct sg_io_hdr *hdr
)
+static int sg_io(struct
request_queue *q, struct gendisk *bd_disk
,
+ struct
sg_io_hdr *hdr, fmode_t mode
)
{
unsigned long start_time;
int writing = 0, ret = 0;
{
unsigned long start_time;
int writing = 0, ret = 0;
@@
-293,7
+292,7
@@
static int sg_io(struct file *file, struct request_queue *q,
if (!rq)
return -ENOMEM;
if (!rq)
return -ENOMEM;
- if (blk_fill_sghdr_rq(q, rq, hdr,
fil
e)) {
+ if (blk_fill_sghdr_rq(q, rq, hdr,
mod
e)) {
blk_put_request(rq);
return -EFAULT;
}
blk_put_request(rq);
return -EFAULT;
}
@@
-380,11
+379,11
@@
out:
* bytes in one int) where the lowest byte is the SCSI status.
*/
#define OMAX_SB_LEN 16 /* For backward compatibility */
* bytes in one int) where the lowest byte is the SCSI status.
*/
#define OMAX_SB_LEN 16 /* For backward compatibility */
-int sg_scsi_ioctl(struct
file *file, struct request_queue *q
,
-
struct gendisk *disk,
struct scsi_ioctl_command __user *sic)
+int sg_scsi_ioctl(struct
request_queue *q, struct gendisk *disk, fmode_t mode
,
+ struct scsi_ioctl_command __user *sic)
{
struct request *rq;
{
struct request *rq;
- int err
, write_perm = 0
;
+ int err;
unsigned int in_len, out_len, bytes, opcode, cmdlen;
char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
unsigned int in_len, out_len, bytes, opcode, cmdlen;
char *buffer = NULL, sense[SCSI_SENSE_BUFFERSIZE];
@@
-426,11
+425,7
@@
int sg_scsi_ioctl(struct file *file, struct request_queue *q,
if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
goto error;
if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
goto error;
- /* scsi_ioctl passes NULL */
- if (file && (file->f_mode & FMODE_WRITE))
- write_perm = 1;
-
- err = blk_verify_command(&q->cmd_filter, rq->cmd, write_perm);
+ err = blk_verify_command(&q->cmd_filter, rq->cmd, mode & FMODE_WRITE);
if (err)
goto error;
if (err)
goto error;
@@
-522,8
+517,8
@@
static inline int blk_send_start_stop(struct request_queue *q,
return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data);
}
return __blk_send_generic(q, bd_disk, GPCMD_START_STOP_UNIT, data);
}
-int scsi_cmd_ioctl(struct
file *file, struct request_queue *q
,
-
struct gendisk *bd_disk,
unsigned int cmd, void __user *arg)
+int scsi_cmd_ioctl(struct
request_queue *q, struct gendisk *bd_disk, fmode_t mode
,
+ unsigned int cmd, void __user *arg)
{
int err;
{
int err;
@@
-564,7
+559,7
@@
int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
err = -EFAULT;
if (copy_from_user(&hdr, arg, sizeof(hdr)))
break;
err = -EFAULT;
if (copy_from_user(&hdr, arg, sizeof(hdr)))
break;
- err = sg_io(
file, q, bd_disk, &hdr
);
+ err = sg_io(
q, bd_disk, &hdr, mode
);
if (err == -EFAULT)
break;
if (err == -EFAULT)
break;
@@
-612,7
+607,7
@@
int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd;
hdr.cmd_len = sizeof(cgc.cmd);
hdr.cmdp = ((struct cdrom_generic_command __user*) arg)->cmd;
hdr.cmd_len = sizeof(cgc.cmd);
- err = sg_io(
file, q, bd_disk, &hdr
);
+ err = sg_io(
q, bd_disk, &hdr, mode
);
if (err == -EFAULT)
break;
if (err == -EFAULT)
break;
@@
-636,7
+631,7
@@
int scsi_cmd_ioctl(struct file *file, struct request_queue *q,
if (!arg)
break;
if (!arg)
break;
- err = sg_scsi_ioctl(
file, q, bd_disk
, arg);
+ err = sg_scsi_ioctl(
q, bd_disk, mode
, arg);
break;
case CDROMCLOSETRAY:
err = blk_send_start_stop(q, bd_disk, 0x03);
break;
case CDROMCLOSETRAY:
err = blk_send_start_stop(q, bd_disk, 0x03);