| From 261b33403babc8f68a6b7d6f94416b5628b13607 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 13 Apr 2020 15:21:45 -0500 |
| Subject: selftests/ipc: Fix test failure seen after initial test run |
| |
| From: Tyler Hicks <tyhicks@linux.microsoft.com> |
| |
| [ Upstream commit b87080eab4c1377706c113fc9c0157f19ea8fed1 ] |
| |
| After successfully running the IPC msgque test once, subsequent runs |
| result in a test failure: |
| |
| $ sudo ./run_kselftest.sh |
| TAP version 13 |
| 1..1 |
| # selftests: ipc: msgque |
| # Failed to get stats for IPC queue with id 0 |
| # Failed to dump queue: -22 |
| # Bail out! |
| # # Pass 0 Fail 0 Xfail 0 Xpass 0 Skip 0 Error 0 |
| not ok 1 selftests: ipc: msgque # exit=1 |
| |
| The dump_queue() function loops through the possible message queue index |
| values using calls to msgctl(kern_id, MSG_STAT, ...) where kern_id |
| represents the index value. The first time the test is ran, the initial |
| index value of 0 is valid and the test is able to complete. The index |
| value of 0 is not valid in subsequent test runs and the loop attempts to |
| try index values of 1, 2, 3, and so on until a valid index value is |
| found that corresponds to the message queue created earlier in the test. |
| |
| The msgctl() syscall returns -1 and sets errno to EINVAL when invalid |
| index values are used. The test failure is caused by incorrectly |
| comparing errno to -EINVAL when cycling through possible index values. |
| |
| Fix invalid test failures on subsequent runs of the msgque test by |
| correctly comparing errno values to a non-negated EINVAL. |
| |
| Fixes: 3a665531a3b7 ("selftests: IPC message queue copy feature test") |
| Signed-off-by: Tyler Hicks <tyhicks@linux.microsoft.com> |
| Signed-off-by: Shuah Khan <skhan@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| tools/testing/selftests/ipc/msgque.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| diff --git a/tools/testing/selftests/ipc/msgque.c b/tools/testing/selftests/ipc/msgque.c |
| index 4c156aeab6b80..5ec4d9e18806c 100644 |
| --- a/tools/testing/selftests/ipc/msgque.c |
| +++ b/tools/testing/selftests/ipc/msgque.c |
| @@ -137,7 +137,7 @@ int dump_queue(struct msgque_data *msgque) |
| for (kern_id = 0; kern_id < 256; kern_id++) { |
| ret = msgctl(kern_id, MSG_STAT, &ds); |
| if (ret < 0) { |
| - if (errno == -EINVAL) |
| + if (errno == EINVAL) |
| continue; |
| printf("Failed to get stats for IPC queue with id %d\n", |
| kern_id); |
| -- |
| 2.20.1 |
| |