Message ID | 1490730469-9562-1-git-send-email-adhemerval.zanella@linaro.org |
---|---|
State | Accepted |
Commit | 2183741fdcc0377e3a4f917194799e576537967f |
Headers | show |
If no one opposes I will commit it shortly. On 28/03/2017 16:47, Adhemerval Zanella wrote: > This patch fixes some test-errno-linux unexpected returns for the > tested syscalls on some older kernels (I saw it on a Linux 3.8 on > armv7l). Basically: > > - inotify_add_watch: Linux v3.8 (676a0675c) removed the test to > check at least one valid bit in flags (to return EINVAL). It > was later added back in v3.9 (04df32fa1). > > - quotactl: returns ENOSYS for kernels not configured with > CONFIG_QUOTA. > > Checked on x86_64-linux-gnu and armv7l-linux-gnueabihf. > > * sysdeps/unix/sysv/linux/test-errno-linux.c (do_test): Handle > non expected inotify_add_watch and quotactl return. > --- > ChangeLog | 5 +++++ > sysdeps/unix/sysv/linux/test-errno-linux.c | 9 +++++++-- > 2 files changed, 12 insertions(+), 2 deletions(-) > > diff --git a/sysdeps/unix/sysv/linux/test-errno-linux.c b/sysdeps/unix/sysv/linux/test-errno-linux.c > index 03a74bd..87ed103 100644 > --- a/sysdeps/unix/sysv/linux/test-errno-linux.c > +++ b/sysdeps/unix/sysv/linux/test-errno-linux.c > @@ -147,7 +147,10 @@ do_test (void) > fails |= test_wrp (EBADF, fdatasync, -1); > fails |= test_wrp (EBADF, flock, -1, LOCK_SH); > fails |= test_wrp (ESRCH, getpgid, -1); > - fails |= test_wrp (EINVAL, inotify_add_watch, -1, "/", 0); > + /* Linux v3.8 (676a0675c) removed the test to check at least one valid > + bit in flags (to return EINVAL). It was later added back in v3.9 > + (04df32fa1). */ > + fails |= test_wrp2 (EINVAL, EBADF, inotify_add_watch, -1, "/", 0); > fails |= test_wrp (EINVAL, mincore, (void *) -1, 0, vec); > /* mlock fails if the result of the addition addr+len was less than addr > (which indicates final address overflow), however on 32 bits binaries > @@ -157,7 +160,9 @@ do_test (void) > fails |= test_wrp2 (EINVAL, ENOMEM, mlock, (void *) -1, 1); > fails |= test_wrp (EINVAL, nanosleep, &ts, &ts); > fails |= test_wrp (EINVAL, poll, &pollfd, -1, 0); > - fails |= test_wrp (ENODEV, quotactl, Q_GETINFO, NULL, -1, (caddr_t) &dqblk); > + /* quotactl returns ENOSYS for kernels not configured with CONFIG_QUOTA. */ > + fails |= test_wrp2 (ENODEV, ENOSYS, quotactl, Q_GETINFO, NULL, -1, > + (caddr_t) &dqblk); > fails |= test_wrp (EINVAL, sched_getparam, -1, &sch_param); > fails |= test_wrp (EINVAL, sched_getscheduler, -1); > fails |= test_wrp (EINVAL, sched_get_priority_max, -1); >
* Adhemerval Zanella: > * sysdeps/unix/sysv/linux/test-errno-linux.c (do_test): Handle > non expected inotify_add_watch and quotactl return. Makes sense to me. Thanks.
diff --git a/sysdeps/unix/sysv/linux/test-errno-linux.c b/sysdeps/unix/sysv/linux/test-errno-linux.c index 03a74bd..87ed103 100644 --- a/sysdeps/unix/sysv/linux/test-errno-linux.c +++ b/sysdeps/unix/sysv/linux/test-errno-linux.c @@ -147,7 +147,10 @@ do_test (void) fails |= test_wrp (EBADF, fdatasync, -1); fails |= test_wrp (EBADF, flock, -1, LOCK_SH); fails |= test_wrp (ESRCH, getpgid, -1); - fails |= test_wrp (EINVAL, inotify_add_watch, -1, "/", 0); + /* Linux v3.8 (676a0675c) removed the test to check at least one valid + bit in flags (to return EINVAL). It was later added back in v3.9 + (04df32fa1). */ + fails |= test_wrp2 (EINVAL, EBADF, inotify_add_watch, -1, "/", 0); fails |= test_wrp (EINVAL, mincore, (void *) -1, 0, vec); /* mlock fails if the result of the addition addr+len was less than addr (which indicates final address overflow), however on 32 bits binaries @@ -157,7 +160,9 @@ do_test (void) fails |= test_wrp2 (EINVAL, ENOMEM, mlock, (void *) -1, 1); fails |= test_wrp (EINVAL, nanosleep, &ts, &ts); fails |= test_wrp (EINVAL, poll, &pollfd, -1, 0); - fails |= test_wrp (ENODEV, quotactl, Q_GETINFO, NULL, -1, (caddr_t) &dqblk); + /* quotactl returns ENOSYS for kernels not configured with CONFIG_QUOTA. */ + fails |= test_wrp2 (ENODEV, ENOSYS, quotactl, Q_GETINFO, NULL, -1, + (caddr_t) &dqblk); fails |= test_wrp (EINVAL, sched_getparam, -1, &sch_param); fails |= test_wrp (EINVAL, sched_getscheduler, -1); fails |= test_wrp (EINVAL, sched_get_priority_max, -1);