Hi Will, This should go to the [email protected] list really. I've CC'd the maintainer to be sure he spots it.
Ross On 15 September 2017 at 23:27, Will Page <[email protected]> wrote: > The fcntl guts switch on "cmd" parameter to identify the fcntl > command being issued, but isn't aware of the file creation flags that > can be ORed in. > > This change masks out the flags from the command only for the switch > statement so that it can correctly determine whether it needs to pass > "lock" or "arg". When real_fcntl() is called, the original value is > still passed on. This corrects an issue observed using pseudo on modern > linux desktops resulting in "pseudo: unknown fcntl argument 1030, > assuming long argument." diagnostics in the output. Decimal 1030 is > 0x0406, which translates to O_NOCTTY | F_SETLK, and should call > "rc = real_fcntl(fd, cmd, lock);", but instead falls through to the > default case instead calling "rc = real_fcntl(fd, cmd, arg);". > > Tested the change using perftest - without this patch, the issue is > trivially reproducible on my Ubuntu Xenial system, and after patching it > emitted no "unknown fcntl argument" diagnostics. > > Signed-off-by: Will Page <[email protected]> > --- > ports/linux/guts/fcntl.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/ports/linux/guts/fcntl.c b/ports/linux/guts/fcntl.c > index 639fd24..d278a8c 100644 > --- a/ports/linux/guts/fcntl.c > +++ b/ports/linux/guts/fcntl.c > @@ -8,6 +8,10 @@ > */ > long arg; > int save_errno; > + /* some bits can be ORed into the cmd should be explicitly ignored > + * see fcntl documentation on F_SETFL */ > + int o_mode_mask = (O_RDONLY | O_WRONLY | O_RDWR) | > + (O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC); > > /* we don't know whether we need lock or arg; grab both, which > * should be safe enough on Linuxy systems. */ > @@ -15,7 +19,7 @@ > arg = va_arg(ap, long); > va_end(ap); > > - switch (cmd) { > + switch (cmd & ~(o_mode_mask)) { > case F_DUPFD: > #ifdef F_DUPFD_CLOEXEC > case F_DUPFD_CLOEXEC: > -- > 2.7.4 > > -- > _______________________________________________ > Openembedded-core mailing list > [email protected] > http://lists.openembedded.org/mailman/listinfo/openembedded-core >
-- _______________________________________________ Openembedded-core mailing list [email protected] http://lists.openembedded.org/mailman/listinfo/openembedded-core
