[LEDE-DEV] [PATCH 0/5] procd: stdio handling rework
Jo-Philipp Wich
jo at mein.io
Tue May 17 08:00:42 PDT 2016
Currently the vi editor will fail with "vi: can't read user input" in failsafe
mode because procd patches all stdio channels to the same descriptor, then sets
nonblocking mode on stderr which causes stdin to end up in nonblocking mode as
well.
Programs like "vi" expect read operations on stdin to block when no input is
available, causing them to fail if read() unexpectedly yields EAGAIN errors.
This patch series addresses the problem by introducing common utility functions
to deal with stdio redirections. The implementation will assign a distinct
descriptor to each i/o channel and use the proper mode (O_WRONLY/O_RDONLY)
when setting them up.
Call sites touching stdin, stdout and stderr are converted to the common
utility functions and error logging is added where appropriate.
While we're at it we also fix a file descriptor leak caused by a missing
close() after a creat() call in preinit.c
Jo-Philipp Wich (5):
utils: add patch_fd() and patch_stdio() helpers
initd: use patch_stdio() for early console setup
initd: use patch_stdio() for kmodloader stdio redirection
inittab: use patch_stdio() for stdio redirection
initd: fix descriptor leak
initd/early.c | 18 +++++-------------
initd/init.c | 14 +++-----------
initd/preinit.c | 9 ++++++++-
inittab.c | 12 ++----------
utils/utils.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
utils/utils.h | 3 +++
6 files changed, 75 insertions(+), 35 deletions(-)
--
2.1.4
More information about the Lede-dev
mailing list