Since commit http://git.kernel.org/linus/65cfc672
which added O_PATH support to the *at() calls,
the error return for readlink/readlinkat
for the empty pathname has switched from
ENOENT to EINVAL. And this patch merged to linux v2.6.39,
So LTP commit https://github.com/linux-test-project/ltp/commit/0cc7514
fix this with the kernel version v2.6.39 compared.

But recently, commit http://git.kernel.org/linus/1fa1e7f6
which ensure we return ENOENT for the empty pathname
for normal lookups.

Now, the patch whitch switch the return value back again
is already queued for 3.0 and 3.1 stable release.

So, if the return value is EINVAL for empty pathname,
it may be a kernel bug, so we needn't to check the kernel
version but return the "kernel bug" warning  to LTP the users.

Signed-off-by: Wanlong Gao <[email protected]>
Acked-by: Jan Stancek <[email protected]>
---
 testcases/kernel/syscalls/readlink/readlink03.c |    9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/testcases/kernel/syscalls/readlink/readlink03.c 
b/testcases/kernel/syscalls/readlink/readlink03.c
index 370bf7d..5ae8513 100644
--- a/testcases/kernel/syscalls/readlink/readlink03.c
+++ b/testcases/kernel/syscalls/readlink/readlink03.c
@@ -173,11 +173,6 @@ int main(int ac, char **av)
                                buf_size = sizeof(buffer);
                        }
 
-                       if (strncmp(test_desc, "Symlink Pathname is empty", 25) 
== 0) {
-                               if ((tst_kvercmp(2, 6, 39)) >= 0)
-                                       Test_cases[i].exp_errno = EINVAL;
-                       }
-
                        /*
                         * Call readlink(2) to test different test conditions.
                         * verify that it fails with -1 return value and sets
@@ -204,6 +199,10 @@ int main(int ac, char **av)
                                         "errno=%d, expected errno=%d",
                                         test_desc, TEST_ERRNO,
                                         Test_cases[i].exp_errno);
+                               if ((strncmp(test_desc, "Symlink Pathname is 
empty", 25) == 0) &&
+                                    TEST_ERRNO == EINVAL)
+                                       tst_resm(TWARN, "It may be a Kernel 
Bug, see the patch:"
+                                                
"http://git.kernel.org/linus/1fa1e7f6";);
                        }
                }
        }
-- 
1.7.10.rc1


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to