----- Original Message -----
> From: "Chuck Ebbert" <cebbert.l...@gmail.com>
> To: ltp-list@lists.sourceforge.net
> Sent: Thursday, 2 October, 2014 12:10:32 AM
> Subject: [LTP] recvfrom01: fix test for invalid message flags
> 


> Note that this introduces a failure on kernels before 3.17, which has
> a bug fix for MSG_ERRQUEUE flag handling. This failure is a legitimate
> bug on these older kernels. (They should not be returning success with
> no data available.)

I hit a failure in this testcase while trying latest LTP before release.
Are you sure this is a bug?

Looking at commit history and man-pages, this looks more like new feature to me,
flag that has not been supported before and now it is.

"MSG_ERRQUEUE is illegal on SOCK_STREAM sockets." [1]
"TCP timestamping introduced MSG_ERRQUEUE handling for TCP sockets." [2][3]

Until commit [3], tcp_recvmsg() has ignored this flag and it was also documented
that way. So, I don't see why TFAIL is valid result on <3.17 for MSG_ERRQUEUE 
test:

 socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
 connect(3, {sa_family=AF_INET, sin_port=htons(59273), 
sin_addr=inet_addr("0.0.0.0")}, 16) = 0
 select(4, [3], NULL, NULL, {2, 0})      = 1 (in [3], left {1, 999998})
 recvfrom(3, "hoser\n", 1024, MSG_ERRQUEUE, NULL, NULL) = 6

Regards,
Jan

[1] https://lkml.org/lkml/2006/9/18/182
[2] f4713a3dfad045d46afcb9c2a7d0bba288920ed4
[3] 4ed2d765dfaccff5ebdac68e2064b59125033a3b

> 
> [1] http://marc.info/?t=141148149900006&r=1&w=2
> 
> ---
> 
> Additional test cases for invalid flags could be added after these two.
> And the recv01 and recvmsg01 tests need still need to be fixed, assuming
> this is the right solution.
> 
> --- a/testcases/kernel/syscalls/recvfrom/recvfrom01.c
> +++ b/testcases/kernel/syscalls/recvfrom/recvfrom01.c
> @@ -115,9 +115,14 @@
>                   -1, EFAULT, setup1, cleanup1, "invalid recv buffer"},
>  /* 6 */
>       {
> -     PF_INET, SOCK_STREAM, 0, (void *)buf, sizeof(buf), -1,
> +     PF_INET, SOCK_STREAM, 0, (void *)buf, sizeof(buf), MSG_OOB,
>                   (struct sockaddr *)&from, &fromlen,
> -                 -1, EINVAL, setup1, cleanup1, "invalid flags set"},};
> +                 -1, EINVAL, setup1, cleanup1, "invalid MSG_OOB flag set"},
> +/* 7 */
> +     {
> +     PF_INET, SOCK_STREAM, 0, (void *)buf, sizeof(buf), MSG_ERRQUEUE,
> +                 (struct sockaddr *)&from, &fromlen,
> +                 -1, EAGAIN, setup1, cleanup1, "invalid MSG_ERRQUEUE flag 
> set"},};
>  
>  int TST_TOTAL = sizeof(tdat) / sizeof(tdat[0]);
>  
> 
> ------------------------------------------------------------------------------
> Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
> Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
> Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
> Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
> http://pubads.g.doubleclick.net/gampad/clk?id=154622311&iu=/4140/ostg.clktrk
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
> 

------------------------------------------------------------------------------
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

Reply via email to