Commit 82814dba authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Linus Torvalds

[PATCH] s390: remove dynamic dasd ioctls

Now that there are no more users of the awkward dynamic ioctl hack we can
remove the code to support it.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 8b2eb664
...@@ -69,15 +69,6 @@ ...@@ -69,15 +69,6 @@
*/ */
struct dasd_device; struct dasd_device;
typedef int (*dasd_ioctl_fn_t) (struct block_device *bdev, int no, long args);
struct dasd_ioctl {
struct list_head list;
struct module *owner;
int no;
dasd_ioctl_fn_t handler;
};
typedef enum { typedef enum {
dasd_era_fatal = -1, /* no chance to recover */ dasd_era_fatal = -1, /* no chance to recover */
dasd_era_none = 0, /* don't recover, everything alright */ dasd_era_none = 0, /* don't recover, everything alright */
...@@ -524,8 +515,6 @@ int dasd_scan_partitions(struct dasd_device *); ...@@ -524,8 +515,6 @@ int dasd_scan_partitions(struct dasd_device *);
void dasd_destroy_partitions(struct dasd_device *); void dasd_destroy_partitions(struct dasd_device *);
/* externals in dasd_ioctl.c */ /* externals in dasd_ioctl.c */
int dasd_ioctl_no_register(struct module *, int, dasd_ioctl_fn_t);
int dasd_ioctl_no_unregister(struct module *, int, dasd_ioctl_fn_t);
int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long); int dasd_ioctl(struct inode *, struct file *, unsigned int, unsigned long);
long dasd_compat_ioctl(struct file *, unsigned int, unsigned long); long dasd_compat_ioctl(struct file *, unsigned int, unsigned long);
......
...@@ -24,59 +24,6 @@ ...@@ -24,59 +24,6 @@
#include "dasd_int.h" #include "dasd_int.h"
/*
* SECTION: ioctl functions.
*/
static struct list_head dasd_ioctl_list = LIST_HEAD_INIT(dasd_ioctl_list);
/*
* Find the ioctl with number no.
*/
static struct dasd_ioctl *
dasd_find_ioctl(int no)
{
struct dasd_ioctl *ioctl;
list_for_each_entry (ioctl, &dasd_ioctl_list, list)
if (ioctl->no == no)
return ioctl;
return NULL;
}
/*
* Register ioctl with number no.
*/
int
dasd_ioctl_no_register(struct module *owner, int no, dasd_ioctl_fn_t handler)
{
struct dasd_ioctl *new;
if (dasd_find_ioctl(no))
return -EBUSY;
new = kmalloc(sizeof (struct dasd_ioctl), GFP_KERNEL);
if (new == NULL)
return -ENOMEM;
new->owner = owner;
new->no = no;
new->handler = handler;
list_add(&new->list, &dasd_ioctl_list);
return 0;
}
/*
* Deregister ioctl with number no.
*/
int
dasd_ioctl_no_unregister(struct module *owner, int no, dasd_ioctl_fn_t handler)
{
struct dasd_ioctl *old = dasd_find_ioctl(no);
if (old == NULL)
return -ENOENT;
if (old->no != no || old->handler != handler || owner != old->owner)
return -EINVAL;
list_del(&old->list);
kfree(old);
return 0;
}
static int static int
dasd_ioctl_api_version(void __user *argp) dasd_ioctl_api_version(void __user *argp)
...@@ -429,8 +376,6 @@ dasd_ioctl(struct inode *inode, struct file *file, ...@@ -429,8 +376,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
struct block_device *bdev = inode->i_bdev; struct block_device *bdev = inode->i_bdev;
struct dasd_device *device = bdev->bd_disk->private_data; struct dasd_device *device = bdev->bd_disk->private_data;
void __user *argp = (void __user *)arg; void __user *argp = (void __user *)arg;
struct dasd_ioctl *ioctl;
int rc;
if (!device) if (!device)
return -ENODEV; return -ENODEV;
...@@ -477,17 +422,6 @@ dasd_ioctl(struct inode *inode, struct file *file, ...@@ -477,17 +422,6 @@ dasd_ioctl(struct inode *inode, struct file *file,
return rval; return rval;
} }
/* else resort to the deprecated dynamic ioctl list */
list_for_each_entry(ioctl, &dasd_ioctl_list, list) {
if (ioctl->no == cmd) {
/* Found a matching ioctl. Call it. */
if (!try_module_get(ioctl->owner))
continue;
rc = ioctl->handler(bdev, cmd, arg);
module_put(ioctl->owner);
return rc;
}
}
return -EINVAL; return -EINVAL;
} }
} }
...@@ -503,6 +437,3 @@ dasd_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) ...@@ -503,6 +437,3 @@ dasd_compat_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
return (rval == -EINVAL) ? -ENOIOCTLCMD : rval; return (rval == -EINVAL) ? -ENOIOCTLCMD : rval;
} }
EXPORT_SYMBOL(dasd_ioctl_no_register);
EXPORT_SYMBOL(dasd_ioctl_no_unregister);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment