aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFUJITA Tomonori2006-12-20 04:18:54 -0600
committerJens Axboe2007-07-16 01:52:44 -0500
commit337ad41deae1b56e56731246322a93251df86e79 (patch)
tree961e38d42e8e7c99c4b48317e48010fa2446332e /block/scsi_ioctl.c
parent9e69fbb5373f7c081acdf2b75d7bac7e95023dd1 (diff)
downloadkernel-common-337ad41deae1b56e56731246322a93251df86e79.tar.gz
kernel-common-337ad41deae1b56e56731246322a93251df86e79.tar.xz
kernel-common-337ad41deae1b56e56731246322a93251df86e79.zip
block: export blk_verify_command for SG v4
blk_fill_sghdr_rq doesn't work for SG v4 so verify_command needed to be exported. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
Diffstat (limited to 'block/scsi_ioctl.c')
-rw-r--r--block/scsi_ioctl.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index daded70ffbb..db53b2c268d 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -112,7 +112,7 @@ static int sg_emulated_host(request_queue_t *q, int __user *p)
112#define safe_for_read(cmd) [cmd] = CMD_READ_SAFE 112#define safe_for_read(cmd) [cmd] = CMD_READ_SAFE
113#define safe_for_write(cmd) [cmd] = CMD_WRITE_SAFE 113#define safe_for_write(cmd) [cmd] = CMD_WRITE_SAFE
114 114
115static int verify_command(unsigned char *cmd, int has_write_perm) 115int blk_verify_command(unsigned char *cmd, int has_write_perm)
116{ 116{
117 static unsigned char cmd_type[256] = { 117 static unsigned char cmd_type[256] = {
118 118
@@ -212,6 +212,7 @@ static int verify_command(unsigned char *cmd, int has_write_perm)
212 /* Otherwise fail it with an "Operation not permitted" */ 212 /* Otherwise fail it with an "Operation not permitted" */
213 return -EPERM; 213 return -EPERM;
214} 214}
215EXPORT_SYMBOL_GPL(blk_verify_command);
215 216
216int blk_fill_sghdr_rq(request_queue_t *q, struct request *rq, 217int blk_fill_sghdr_rq(request_queue_t *q, struct request *rq,
217 struct sg_io_hdr *hdr, int has_write_perm) 218 struct sg_io_hdr *hdr, int has_write_perm)
@@ -220,7 +221,7 @@ int blk_fill_sghdr_rq(request_queue_t *q, struct request *rq,
220 221
221 if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len)) 222 if (copy_from_user(rq->cmd, hdr->cmdp, hdr->cmd_len))
222 return -EFAULT; 223 return -EFAULT;
223 if (verify_command(rq->cmd, has_write_perm)) 224 if (blk_verify_command(rq->cmd, has_write_perm))
224 return -EPERM; 225 return -EPERM;
225 226
226 /* 227 /*
@@ -457,7 +458,7 @@ int sg_scsi_ioctl(struct file *file, struct request_queue *q,
457 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len)) 458 if (in_len && copy_from_user(buffer, sic->data + cmdlen, in_len))
458 goto error; 459 goto error;
459 460
460 err = verify_command(rq->cmd, file->f_mode & FMODE_WRITE); 461 err = blk_verify_command(rq->cmd, file->f_mode & FMODE_WRITE);
461 if (err) 462 if (err)
462 goto error; 463 goto error;
463 464