summaryrefslogtreecommitdiff
path: root/Documentation/io-mapping.txt
diff options
context:
space:
mode:
authorVitaly Mayatskikh <v.mayatskih@gmail.com>2009-09-24 02:56:51 +0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-09-24 18:21:00 +0400
commitdfe16dfa4ac178d9a10b489a73d535c6976e48d2 (patch)
tree0ebd7bddf7e99915baed4955faeed2af5bba4203 /Documentation/io-mapping.txt
parentb6e763f07fba6243d2a553ed9a4f3e10a789932a (diff)
downloadlinux-dfe16dfa4ac178d9a10b489a73d535c6976e48d2.tar.xz
do_wait: fix sys_waitid()-specific behaviour
do_wait() checks ->wo_info to figure out who is the caller. If it's not NULL the caller should be sys_waitid(), in that case do_wait() fixes up the retval or zeros ->wo_info, depending on retval from underlying function. This is bug: user can pass ->wo_info == NULL and sys_waitid() will return incorrect value. man 2 waitid says: waitid(): returns 0 on success Test-case: int main(void) { if (fork()) assert(waitid(P_ALL, 0, NULL, WEXITED) == 0); return 0; } Result: Assertion `waitid(P_ALL, 0, ((void *)0), 4) == 0' failed. Move that code to sys_waitid(). User-visible change: sys_waitid() will return 0 on success, either infop is set or not. Note, there's another bug in wait_noreap_copyout() which affects return value of sys_waitid(). It will be fixed in next patch. Signed-off-by: Vitaly Mayatskikh <v.mayatskih@gmail.com> Reviewed-by: Oleg Nesterov <oleg@redhat.com> Cc: Roland McGrath <roland@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'Documentation/io-mapping.txt')
0 files changed, 0 insertions, 0 deletions