• Jeff Dike's avatar
    [PATCH] uml: preserve errno in error paths · b4fd310e
    Jeff Dike authored
    The poster child for this patch is the third tuntap_user hunk.  When an ioctl
    fails, it properly closes the opened file descriptor and returns.  However,
    the close resets errno to 0, and the 'return errno' that follows returns 0
    rather than the value that ioctl set.  This caused the caller to believe that
    the device open succeeded and had opened file descriptor 0, which caused no
    end of interesting behavior.
    
    The rest of this patch is a pass through the UML sources looking for places
    where errno could be reset before being passed back out.  A common culprit is
    printk, which could call write, being called before errno is returned.
    
    In some cases, where the code ends up being much smaller, I just deleted the
    printk.
    
    There was another case where a caller of run_helper looked at errno after a
    failure, rather than the return value of run_helper, which was the errno value
    that it wanted.
    Signed-off-by: default avatarJeff Dike <jdike@addtoit.com>
    Cc: Paolo Giarrusso <blaisorblade@yahoo.it>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    b4fd310e
tuntap_user.c 4.98 KB