[LTP] [PATCH] kernel/syscall/setrlimit05.c: use a legal bad address for mips
Hongzhi, Song
hongzhi.song@windriver.com
Tue Nov 6 07:48:28 CET 2018
On 11/06/2018 10:01 AM, Xiao Yang wrote:
> Hi Hongzhi,
>
> Do you try to build CONFIG_SYSCTL_SYSCALL and run sysctl04 on mips32?
> It seems that (void *) -1 is used in sysctl04.c as well. Perhaps, you
> can fix
> the issue together if sysctl04 gets the same error on mips32. :-)
Thank you for your help.
I find that there is no glibc wrapper for syscall() but other syscall
APIs do.
Sometimes, glibc converts struct32 to struct64, this behavior maybe has an
effect on result.
--Hongzhi
>
> Best Regards,
> Xiao Yang
> On 2018/11/05 15:30, Hongzhi.Song wrote:
>> This testcase fails on mips32. The process is killed by SIGBUS which
>> doesn't return EFAULT as expect.
>>
>> This is because:
>> ((void *)-1) is not a legal bad address which causes the process
>> killed by SIGBUG on mips.
>>
>> 'tst_get_bad_addr()' returns an address that should work on mips
>> and other arches.
>>
>> Signed-off-by: Hongzhi.Song<hongzhi.song@windriver.com>
>> ---
>> testcases/kernel/syscalls/setrlimit/setrlimit05.c | 6 +++++-
>> 1 file changed, 5 insertions(+), 1 deletion(-)
>>
>> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit05.c
>> b/testcases/kernel/syscalls/setrlimit/setrlimit05.c
>> index e716722..57b0b82 100644
>> --- a/testcases/kernel/syscalls/setrlimit/setrlimit05.c
>> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit05.c
>> @@ -31,9 +31,13 @@ static void verify_setrlimit(void)
>> int status;
>> pid_t pid;
>>
>> + void *bad_addr;
>> +
>> + bad_addr = tst_get_bad_addr(NULL);
>> +
>> pid = SAFE_FORK();
>> if (!pid) {
>> - TEST(setrlimit(RLIMIT_NOFILE, (void *) -1));
>> + TEST(setrlimit(RLIMIT_NOFILE,(struct rlimit *)bad_addr));
>> if (TST_RET != -1) {
>> tst_res(TFAIL, "setrlimit() succeeded unexpectedly");
>> exit(0);
>
>
>
>
More information about the ltp
mailing list