[LTP] [PATCH] syscalls/shmctl04: Add kernel version requestions

zhaogongyi zhaogongyi@huawei.com
Tue Mar 30 03:58:20 CEST 2021


Hi Xu,

It looks good to me.

On the other hand, msgctl06.c, semctl09.c have the same problem for MSG_STAT_ANY and SEM_STAT_ANY,  we can also fix them similarly?

Thanks!

Best Regards,
Gongyi

> 
> Hi Gongyi
> > SHM_STAT_ANY is imported to linux in v4.17.
> >
> > Signed-off-by: Zhao Gongyi<zhaogongyi@huawei.com>
> > ---
> >   testcases/kernel/syscalls/ipc/shmctl/shmctl04.c | 1 +
> >   1 file changed, 1 insertion(+)
> >
> > diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> > b/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> > index 9e8ec4199..18ac8ba0a 100644
> > --- a/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> > +++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> > @@ -168,6 +168,7 @@ static void cleanup(void)
> >   }
> >
> >   static struct tst_test test = {
> > +	.min_kver = "4.17",
> Some linux distribution such as centos7.8 has backported this feature, so
> we should call SHM_STAT_ANY directly to detect whether kernel supports
> SHM_STAT_ANY instead of using min_kver.
> 
> code as below:
> --- a/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> +++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl04.c
> @@ -155,10 +155,19 @@ static void verify_shminfo(unsigned int n)
>   static void setup(void)
>   {
>          struct passwd *ltpuser = SAFE_GETPWNAM("nobody");
> +       struct shmid_ds temp_ds;
>          nobody_uid = ltpuser->pw_uid;
>          root_uid = 0;
> 
>          shm_id = SAFE_SHMGET(IPC_PRIVATE, SHM_SIZE, IPC_CREAT |
> SHM_RW);
> +       TEST(shmctl(shm_id, SHM_STAT_ANY, &temp_ds));
> +       if (TST_RET == -1) {
> +               if (TST_ERR == EINVAL)
> +                       tst_brk(TCONF, "kernel doesn't support
> SHM_STAT_ANY");
> +               else
> +                       tst_brk(TBROK | TTERRNO,
> +                               "Current environment doesn't permit
> SHM_STAT_ANY");
> +       }
>   }
> 
> 
> Also, On your environment, does semctl09.c/msgctl06.c have the same
> problem?
> 
> >   	.setup = setup,
> >   	.cleanup = cleanup,
> >   	.test = verify_shminfo,
> > --
> > 2.17.1
> >
> >


More information about the ltp mailing list