atomic_dec(&bd->in_flight);
- wake_up(&bd->wq_done);
+ smp_mb();
+ if (waitqueue_active(&bd->wq_done))
+ wake_up(&bd->wq_done);
}
#if LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 18)
return -EFAULT;
switch (cmd) {
- case 0:
+ case B_IOCTL_ADD:
ret = b_add_dev(&bic);
if (!ret && copy_to_user(uarg, &bic, sizeof(bic))) {
b_del_dev(&bic);
ret = -EFAULT;
}
break;
- case 1:
+ case B_IOCTL_DEL:
ret = b_del_dev(&bic);
break;
default:
break;
}
- return -ENOTTY;
+ return ret;
}
static const struct file_operations b_misc_fops = {