X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=arch%2Fmips%2Fkernel%2Firixinv.c;h=de8584f623113556166d7756cc06b97ecd424eae;hb=43bc926fffd92024b46cafaf7350d669ba9ca884;hp=eea2582451e4dd9b95e34f16a4742d679a15ff3a;hpb=5273a3df6485dc2ad6aa7ddd441b9a21970f003b;p=linux-2.6.git diff --git a/arch/mips/kernel/irixinv.c b/arch/mips/kernel/irixinv.c index eea258245..de8584f62 100644 --- a/arch/mips/kernel/irixinv.c +++ b/arch/mips/kernel/irixinv.c @@ -6,10 +6,8 @@ * Miguel de Icaza, 1997. */ #include -#include -#include -#include #include +#include #define MAX_INVENTORY 50 int inventory_items = 0; @@ -32,24 +30,25 @@ void add_to_inventory (int class, int type, int controller, int unit, int state) inventory_items++; } -int dump_inventory_to_user (void *userbuf, int size) +int dump_inventory_to_user (void __user *userbuf, int size) { inventory_t *inv = &inventory [0]; - inventory_t *user = userbuf; + inventory_t __user *user = userbuf; int v; - if ((v = verify_area (VERIFY_WRITE, userbuf, size))) - return v; + if (!access_ok(VERIFY_WRITE, userbuf, size)) + return -EFAULT; for (v = 0; v < inventory_items; v++){ inv = &inventory [v]; - copy_to_user (user, inv, sizeof (inventory_t)); + if (copy_to_user (user, inv, sizeof (inventory_t))) + return -EFAULT; user++; } return inventory_items * sizeof (inventory_t); } -static int __init init_inventory(void) +int __init init_inventory(void) { /* * gross hack while we put the right bits all over the kernel @@ -77,5 +76,3 @@ static int __init init_inventory(void) return 0; } - -module_init(init_inventory);