aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/s390/block/dasd_ioctl.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2006-03-24 06:15:20 -0500
committerLinus Torvalds <torvalds@g5.osdl.org>2006-03-24 10:33:17 -0500
commit1107ccfbdef280fedc677af3bdbc405611ba554a (patch)
treea3588525dbe853d13e5f25fa496deecaa022ab3a /drivers/s390/block/dasd_ioctl.c
parent13c6204facb01d425320411c17febff666875518 (diff)
[PATCH] s390: use normal switch statement for ioctls in dasd_ioctlc
Add an ->ioctl method to the dasd_discipline structure. This allows to apply the same kind of cleanups the last patch applied to dasd_ioctl.c to dasd_eckd.c (the only dasd discipline with special ioctls) aswell. Again lots of code removed. During auditing the ioctls I found two fishy return value propagations from copy_{from,to}_user, maintainers please check those, I've marked them with XXX comments. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/s390/block/dasd_ioctl.c')
-rw-r--r--drivers/s390/block/dasd_ioctl.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/s390/block/dasd_ioctl.c b/drivers/s390/block/dasd_ioctl.c
index e3ad34686444..bb6caf46bbd9 100644
--- a/drivers/s390/block/dasd_ioctl.c
+++ b/drivers/s390/block/dasd_ioctl.c
@@ -448,7 +448,14 @@ dasd_ioctl(struct inode *inode, struct file *file,
448 case DASDAPIVER: 448 case DASDAPIVER:
449 return dasd_ioctl_api_version(argp); 449 return dasd_ioctl_api_version(argp);
450 default: 450 default:
451 /* resort to the deprecated dynamic ioctl list */ 451 /* if the discipline has an ioctl method try it. */
452 if (device->discipline->ioctl) {
453 int rval = device->discipline->ioctl(device, cmd, argp);
454 if (rval != -ENOIOCTLCMD)
455 return rval;
456 }
457
458 /* else resort to the deprecated dynamic ioctl list */
452 list_for_each_entry(ioctl, &dasd_ioctl_list, list) { 459 list_for_each_entry(ioctl, &dasd_ioctl_list, list) {
453 if (ioctl->no == cmd) { 460 if (ioctl->no == cmd) {
454 /* Found a matching ioctl. Call it. */ 461 /* Found a matching ioctl. Call it. */