• Dominik Brodowski's avatar
    Revert "fs: remove ksys_dup()" · 74f1a299
    Dominik Brodowski authored
    This reverts commit 8243186f ("fs: remove ksys_dup()") and the
    subsequent fix for it in commit 2d3145f8 ("early init: fix error
    handling when opening /dev/console").
    
    Trying to use filp_open() and f_dupfd() instead of pseudo-syscalls
    caused more trouble than what is worth it: it requires accessing vfs
    internals and it turns out there were other bugs in it too.
    
    In particular, the file reference counting was wrong - because unlike
    the original "open+2*dup" sequence it used "filp_open+3*f_dupfd" and
    thus had an extra leaked file reference.
    
    That in turn then caused odd problems with Androidx86 long after boot
    becaue of how the extra reference to the console kept the session active
    even after all file descriptors had been closed.
    Reported-by: default avataryouling 257 <youling257@gmail.com>
    Cc: Arvind Sankar <nivedita@alum.mit.edu>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Signed-off-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    74f1a299
file.c 24.2 KB