linux/include
Linus Torvalds faf309009e sys_poll: fix incorrect type for 'timeout' parameter
The 'poll()' system call timeout parameter is supposed to be 'int', not
'long'.

Now, the reason this matters is that right now 32-bit compat mode is
broken on at least x86-64, because the 32-bit code just calls
'sys_poll()' directly on x86-64, and the 32-bit argument will have been
zero-extended, turning a signed 'int' into a large unsigned 'long'
value.

We could just introduce a 'compat_sys_poll()' function for this, and
that may eventually be what we have to do, but since the actual standard
poll() semantics is *supposed* to be 'int', and since at least on x86-64
glibc sign-extends the argument before invocing the system call (so
nobody can actually use a 64-bit timeout value in user space _anyway_,
even in 64-bit binaries), the simpler solution would seem to be to just
fix the definition of the system call to match what it should have been
from the very start.

If it turns out that somebody somehow circumvents the user-level libc
64-bit sign extension and actually uses a large unsigned 64-bit timeout
despite that not being how poll() is supposed to work, we will need to
do the compat_sys_poll() approach.

Reported-by: Thomas Meyer <thomas@m3y3r.de>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-02-21 17:24:20 -08:00
..
acpi Merge branches 'atomicio-apei', 'hotplug', 'sony-nvs-nosave' and 'thermal-netlink' into release 2012-01-23 19:47:06 -05:00
asm-generic asm-generic: architecture independent readq/writeq for 32bit environment 2012-02-21 16:47:28 -08:00
crypto
drm drm: Fix authentication kernel crash 2012-01-25 09:27:45 +00:00
keys keys: add a "logon" key type 2012-01-17 22:39:40 -06:00
linux sys_poll: fix incorrect type for 'timeout' parameter 2012-02-21 17:24:20 -08:00
math-emu
media Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-01-18 12:53:54 -08:00
misc
mtd mtd: document that MEMWRITE ioctl is NAND-specific 2012-01-09 18:18:36 +00:00
net netprio_cgroup: fix wrong memory access when NETPRIO_CGROUP=m 2012-02-10 15:08:57 -05:00
pcmcia
rdma
rxrpc
scsi [SCSI] libfc: Declare local functions static 2012-01-16 12:45:48 +04:00
sound Merge branch 'fix/asoc' into for-linus 2012-01-31 15:13:14 +01:00
target target: Change target_submit_cmd() to return void 2012-02-07 06:41:04 +00:00
trace writeback: fix dereferencing NULL bdi->dev on trace_writeback_queue 2012-02-06 11:17:25 +08:00
video fbdev fixes for 3.3 2012-02-07 15:54:02 -08:00
xen Merge branch 'for-3.3/drivers' of git://git.kernel.dk/linux-block 2012-01-15 12:48:41 -08:00
Kbuild