X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Fmacintosh%2Fadb.c;fp=drivers%2Fmacintosh%2Fadb.c;h=7297c77f99cfbc15b3b8b03d3c36a39b93578328;hb=f7f1b0f1e2fbadeab12d24236000e778aa9b1ead;hp=5855bbf02e277b7dedb8e383a2f4a392c273c15e;hpb=e3f6fb6212a7102bdb56ba38fa1e98fe72950475;p=linux-2.6.git diff --git a/drivers/macintosh/adb.c b/drivers/macintosh/adb.c index 5855bbf02..7297c77f9 100644 --- a/drivers/macintosh/adb.c +++ b/drivers/macintosh/adb.c @@ -755,7 +755,7 @@ static int adb_release(struct inode *inode, struct file *file) static ssize_t adb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { - int ret; + int ret = 0; struct adbdev_state *state = file->private_data; struct adb_request *req; wait_queue_t wait = __WAITQUEUE_INITIALIZER(wait,current); @@ -765,9 +765,8 @@ static ssize_t adb_read(struct file *file, char __user *buf, return -EINVAL; if (count > sizeof(req->reply)) count = sizeof(req->reply); - ret = verify_area(VERIFY_WRITE, buf, count); - if (ret) - return ret; + if (!access_ok(VERIFY_WRITE, buf, count)) + return -EFAULT; req = NULL; spin_lock_irqsave(&state->lock, flags); @@ -824,9 +823,8 @@ static ssize_t adb_write(struct file *file, const char __user *buf, return -EINVAL; if (adb_controller == NULL) return -ENXIO; - ret = verify_area(VERIFY_READ, buf, count); - if (ret) - return ret; + if (!access_ok(VERIFY_READ, buf, count)) + return -EFAULT; req = (struct adb_request *) kmalloc(sizeof(struct adb_request), GFP_KERNEL);