aboutsummaryrefslogtreecommitdiffstats
path: root/arch/um/sys-ia64
diff options
context:
space:
mode:
authorJeff Dike <jdike@addtoit.com>2007-02-16 01:27:21 -0800
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-02-16 08:13:56 -0800
commit838e56a11cdb2abaf490eb7879ab021db938d47d (patch)
tree4a651d8190b6dab23040c405c1cac3645844372c /arch/um/sys-ia64
parent[PATCH] __page_symlink retry loop error code fix (diff)
downloadlinux-dev-838e56a11cdb2abaf490eb7879ab021db938d47d.tar.xz
linux-dev-838e56a11cdb2abaf490eb7879ab021db938d47d.zip
[PATCH] uml: fix 2.6.20 hang
A previous cleanup misused need_poll, which had a fairly broken interface. It implemented a growable array, changing the used elements count itself, but leaving it up to the caller to fill in the actual elements, including the entire array if the array had to be reallocated. This worked because the previous users were switching between two such structures, and the elements were copied from the inactive array to the active array after making sure the active array had enough room. maybe_sigio_broken was made to use need_poll, but it was operating on a single array, so when the buffer was reallocated, the previous contents were lost. This patch makes need_poll implement more sane semantics. It merely assures that the array is of the proper size and that the contents are preserved. It is up to the caller to adjust the used elements count and to ensure that the proper elements are resent. This manifested itself as a hang in 2.6.20 as the uninitialized buffer convinced UML that one of its own file descriptors didn't support SIGIO and needed to be watched by poll in a separate thread. The result was an interrupt flood as control traffic over this descriptor sparked interrupts, which resulted in more control traffic, ad nauseum. Signed-off-by: Jeff Dike <jdike@addtoit.com> Cc: <stable@kernel.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/um/sys-ia64')
0 files changed, 0 insertions, 0 deletions