diff options
| author | Stefan Richter <[email protected]> | 2011-08-10 22:06:04 +0000 |
|---|---|---|
| committer | Stefan Richter <[email protected]> | 2011-08-12 13:30:08 +0000 |
| commit | 9c1176b6a28850703ea6e3a0f0c703f6d6c61cd3 (patch) | |
| tree | 5e51f0e7e36c78ae63e3128125cb008bcc442aa0 /lib/debugobjects.c | |
| parent | firewire: document the sysfs ABIs (diff) | |
| download | kernel-9c1176b6a28850703ea6e3a0f0c703f6d6c61cd3.tar.gz kernel-9c1176b6a28850703ea6e3a0f0c703f6d6c61cd3.zip | |
firewire: cdev: fix 32 bit userland on 64 bit kernel compat corner cases
Clemens points out that we need to use compat_ptr() in order to safely
cast from u64 to addresses of a 32-bit usermode client.
Before, our conversion went wrong
- in practice if the client cast from pointer to integer such that
sign-extension happened, (libraw1394 and libdc1394 at least were not
doing that, IOW were not affected)
or
- in theory on s390 (which doesn't have FireWire though) and on the
tile architecture, regardless of what the client does.
The bug would usually be observed as the initial get_info ioctl failing
with "Bad address" (EFAULT).
Reported-by: Carl Karsten <[email protected]>
Reported-by: Clemens Ladisch <[email protected]>
Signed-off-by: Stefan Richter <[email protected]>
Diffstat (limited to 'lib/debugobjects.c')
0 files changed, 0 insertions, 0 deletions
