Hi Michal, On 05/16/2016 06:05 PM, Michal Nazarewicz wrote: > So I’ve been looking at AIO handling in f_fs and either I’m stupid or > the code is broken. Here’s part of ffs_user_copy_worker: > > int ret = io_data->req->status ? io_data->req->status : > io_data->req->actual; > if (io_data->read && ret > 0) { > use_mm(io_data->mm); > ret = copy_to_iter(io_data->buf, ret, &io_data->data); > if (iov_iter_count(&io_data->data)) > ret = -EFAULT; > unuse_mm(io_data->mm); > } > > First of all, shouldn’t the copy_to_iter invocation be: > > if (copy_to_iter(io_data->buf, ret, &io_data->data)) > ret = -EFAULT; > > Second of all, if the request reads fewer bytes than user requested, > iov_iter_count(…) will be non-zero (namely it will be the difference > between user’s buffer size and data read). This should not result in > EFAULT though. > > So, am I going crazy? Or does this need to be fixed as well? > I think it has been already fixed: http://permalink.gmane.org/gmane.linux.usb.general/139316 Cheers, -- Krzysztof Opasiak Samsung R&D Institute Poland Samsung Electronics -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html