ieee1394: raw1394: Fix read() for 32bit userland on 64bit kernel
read() always failed with -EFAULT. This was happening due to raw1394_compat_read copying data to wrong location - access_ok always failed as 'r' is kernel address, not user. Whole function just tried to copy data from 'r' to 'r', which is not good. Signed-off-by: Petr Vandrovec <petr@vandrovec.name> Acked-by: Dan Dennedy <dan@dennedy.org> Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de> (split into 3 patches)
This commit is contained in:
parent
6552731a05
commit
ee9be42596
1 changed files with 1 additions and 1 deletions
|
@ -459,7 +459,7 @@ static const char __user *raw1394_compat_write(const char __user *buf)
|
|||
static int
|
||||
raw1394_compat_read(const char __user *buf, struct raw1394_request *r)
|
||||
{
|
||||
struct compat_raw1394_req __user *cr = (typeof(cr)) r;
|
||||
struct compat_raw1394_req __user *cr = (typeof(cr)) buf;
|
||||
if (!access_ok(VERIFY_WRITE, cr, sizeof(struct compat_raw1394_req)) ||
|
||||
P(type) ||
|
||||
P(error) ||
|
||||
|
|
Loading…
Reference in a new issue