Loading drivers/block/paride/pg.c +16 −6 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, D_DLY}; #include <linux/pg.h> #include <linux/device.h> #include <linux/sched.h> /* current, TASK_* */ #include <linux/smp_lock.h> #include <linux/jiffies.h> #include <asm/uaccess.h> Loading Loading @@ -515,12 +516,18 @@ static int pg_open(struct inode *inode, struct file *file) { int unit = iminor(inode) & 0x7f; struct pg *dev = &devices[unit]; int ret = 0; if ((unit >= PG_UNITS) || (!dev->present)) return -ENODEV; lock_kernel(); if ((unit >= PG_UNITS) || (!dev->present)) { ret = -ENODEV; goto out; } if (test_and_set_bit(0, &dev->access)) return -EBUSY; if (test_and_set_bit(0, &dev->access)) { ret = -EBUSY; goto out; } if (dev->busy) { pg_reset(dev); Loading @@ -533,12 +540,15 @@ static int pg_open(struct inode *inode, struct file *file) if (dev->bufptr == NULL) { clear_bit(0, &dev->access); printk("%s: buffer allocation failed\n", dev->name); return -ENOMEM; ret = -ENOMEM; goto out; } file->private_data = dev; return 0; out: unlock_kernel(); return ret; } static int pg_release(struct inode *inode, struct file *file) Loading drivers/block/paride/pt.c +7 −1 Original line number Diff line number Diff line Loading @@ -146,6 +146,7 @@ static int (*drives[4])[6] = {&drive0, &drive1, &drive2, &drive3}; #include <linux/mtio.h> #include <linux/device.h> #include <linux/sched.h> /* current, TASK_*, schedule_timeout() */ #include <linux/smp_lock.h> #include <asm/uaccess.h> Loading Loading @@ -650,8 +651,11 @@ static int pt_open(struct inode *inode, struct file *file) struct pt_unit *tape = pt + unit; int err; if (unit >= PT_UNITS || (!tape->present)) lock_kernel(); if (unit >= PT_UNITS || (!tape->present)) { unlock_kernel(); return -ENODEV; } err = -EBUSY; if (!atomic_dec_and_test(&tape->available)) Loading @@ -678,10 +682,12 @@ static int pt_open(struct inode *inode, struct file *file) } file->private_data = tape; unlock_kernel(); return 0; out: atomic_inc(&tape->available); unlock_kernel(); return err; } Loading Loading
drivers/block/paride/pg.c +16 −6 Original line number Diff line number Diff line Loading @@ -162,6 +162,7 @@ enum {D_PRT, D_PRO, D_UNI, D_MOD, D_SLV, D_DLY}; #include <linux/pg.h> #include <linux/device.h> #include <linux/sched.h> /* current, TASK_* */ #include <linux/smp_lock.h> #include <linux/jiffies.h> #include <asm/uaccess.h> Loading Loading @@ -515,12 +516,18 @@ static int pg_open(struct inode *inode, struct file *file) { int unit = iminor(inode) & 0x7f; struct pg *dev = &devices[unit]; int ret = 0; if ((unit >= PG_UNITS) || (!dev->present)) return -ENODEV; lock_kernel(); if ((unit >= PG_UNITS) || (!dev->present)) { ret = -ENODEV; goto out; } if (test_and_set_bit(0, &dev->access)) return -EBUSY; if (test_and_set_bit(0, &dev->access)) { ret = -EBUSY; goto out; } if (dev->busy) { pg_reset(dev); Loading @@ -533,12 +540,15 @@ static int pg_open(struct inode *inode, struct file *file) if (dev->bufptr == NULL) { clear_bit(0, &dev->access); printk("%s: buffer allocation failed\n", dev->name); return -ENOMEM; ret = -ENOMEM; goto out; } file->private_data = dev; return 0; out: unlock_kernel(); return ret; } static int pg_release(struct inode *inode, struct file *file) Loading
drivers/block/paride/pt.c +7 −1 Original line number Diff line number Diff line Loading @@ -146,6 +146,7 @@ static int (*drives[4])[6] = {&drive0, &drive1, &drive2, &drive3}; #include <linux/mtio.h> #include <linux/device.h> #include <linux/sched.h> /* current, TASK_*, schedule_timeout() */ #include <linux/smp_lock.h> #include <asm/uaccess.h> Loading Loading @@ -650,8 +651,11 @@ static int pt_open(struct inode *inode, struct file *file) struct pt_unit *tape = pt + unit; int err; if (unit >= PT_UNITS || (!tape->present)) lock_kernel(); if (unit >= PT_UNITS || (!tape->present)) { unlock_kernel(); return -ENODEV; } err = -EBUSY; if (!atomic_dec_and_test(&tape->available)) Loading @@ -678,10 +682,12 @@ static int pt_open(struct inode *inode, struct file *file) } file->private_data = tape; unlock_kernel(); return 0; out: atomic_inc(&tape->available); unlock_kernel(); return err; } Loading