History

[media] IR/lirc: further ioctl portability fixups

>From Joris van Rantwijk <jorispubl@xs4all.nl>: I tested lirc_serial and found that it works fine. Except the LIRC ioctls do not work in my 64-bit-kernel/32-bit-user setup. I added compat_ioctl entries in the drivers to fix this. While doing so, I noticed inconsistencies in the argument type of the LIRC ioctls. All ioctls are declared in lirc.h as having argument type __u32, however there are a few places where the driver calls get_user/put_user with an unsigned long argument. The patch below changes lirc_dev and lirc_serial to use __u32 for all ioctl arguments, and adds compat_ioctl entries. It should probably also be done in the other low-level drivers, but I don't have hardware to test those. I've dropped the .compat_ioctl addition from Joris' original patch, as I swear the non-compat definition should now work for both 32-bit and 64-bit userspace. Technically, I think we still need/want a in getting a reply to you).

Jarod Wilson committed 16 years ago

Commit be1f9851 parent d322bf43 files · +14 −14Browse files

Showing the changes to include/media/lirc_dev.h (1 of 3 files). Show all

Unified · Split

include/media/lirc_dev.h+2−2
@@ -125,10 +125,10 @@ static inline unsigned int lirc_buffer_write(struct lirc_buffer *buf, · 124 unmodified lines
125125 struct lirc_driver {
126126 char name[40];
127127 int minor;
128− unsigned long code_length;
128+ __u32 code_length;
129129 unsigned int buffer_size; /* in chunks holding one code each */
130130 int sample_rate;
131− unsigned long features;
131+ __u32 features;
132132
133133 unsigned int chunk_size;
134134