*Description:*
For bug: https://bugs.launchpad.net/linaro-qa/+bug/1327251
Purpose of Change: Because of code changes in socket.c file for
32bit-userspace, return value changed to EINVAL in case of
32bit-userspace/64-bit-kernelspace.
Test changed to check if 32user/64kernel , then return value should be
checked to EINVAL ,
for other systems return value should be EOPNOTSUPP
Kernel : 3.10.0-123.13.2
Signed-off-by: snehalphule <sne...@linux.vnet.ibm.com>
--- ltp-full-20140828/testcases/kernel/syscalls/sendmsg/sendmsg01.c.orig
2015-01-23 00:54:22.804582530 -0600
+++ ltp-full-20140828/testcases/kernel/syscalls/sendmsg/sendmsg01.c
2015-01-23 00:57:26.149032808 -0600
@@ -677,6 +677,38 @@ static void setup4(void)
control->cmsg_type = SCM_RIGHTS;
*(int *)CMSG_DATA(control) = tfd;
controllen = control->cmsg_len;
+
+ // In case of Compact (32bit) user space and 64bit kernel
space, return value is EINVAL
+ if (tdat[testno].flags == (unsigned)~MSG_CMSG_COMPAT)
+ {
+ char user_space_bit[BUFSIZ];
+ char kernel_arch[BUFSIZ];
+ int kernel_space_bit;
+
+ FILE *pipe = popen("getconf LONG_BIT", "r");
+ if (fgets(user_space_bit, BUFSIZ, pipe) != NULL)
+ {
+ pipe = popen("arch", "r");
+ if (fgets(kernel_arch, BUFSIZ, pipe) != NULL)
+ {
+ // Remove carriage return from the buffer
+ size_t len = strlen(user_space_bit);
+ if (len > 0 && user_space_bit[len-1] == '\n') {
user_space_bit[--len] = '\0';}
+ len = strlen(kernel_arch);
+ if (len > 0 && kernel_arch[len-1] == '\n') {
kernel_arch[--len] = '\0';}
+
+ // Check if Kernel used is 64 bit or 32 bit
+ if (!strcmp(kernel_arch, "ppc64") ||
!strcmp(kernel_arch, "s390x") || !strcmp(kernel_arch, "x86_64"))
+ kernel_space_bit = 64;
+ else
+ kernel_space_bit = 32;
+
+ // Only if it is Compact user space (32bit), then
return value is EINVAL
+ if (atoi(user_space_bit) == 32 && kernel_space_bit
== 64)
+ tdat[testno].experrno = EINVAL;
+ }
+ }
+ }
}
static void cleanup4(void)
------------------------------------------------------------------------------
Dive into the World of Parallel Programming. The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list