Subject: Fw: [Bug 77221] New: Clear tx_flags when transhdrlen == 0 in ip_append_data without checking?

From: Stephen Hemminger <[email-masked]>
Date: Tue, 3 Jun 2014 08:33:06 -0700

Begin forwarded message:

Date: Tue, 3 Jun 2014 00:46:20 -0700
From: "[email-masked]" <[email-masked]>
To: "[email-masked]" <[email-masked]>
Subject: [Bug 77221] New: Clear tx_flags when transhdrlen == 0 in ip_append_data without checking?

https://bugzilla.kernel.org/show_bug.cgi?id=77221

            Bug ID: 77221
           Summary: Clear tx_flags when transhdrlen == 0 in ip_append_data
                    without checking?
           Product: Networking
           Version: 2.5
    Kernel Version: 3.14
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: IPV4
          Assignee: [email-masked]
          Reporter: [email-masked]
        Regression: No

Hi,

While I was tracing why TX_TIMESTAMP won't work with RAW socket and
Non-privileged ICMP socket, I found that both raw.c and ping.c call
ip_append_data with transhdrlen set to 0, and in ip_append_data, there are
timestamp specific 

924                                 else
925                                         /* only the initial fragment is
926                                            time stamped */
927                                         cork->tx_flags = 0;

To my understanding in ping.c transhdrlen should be set to sizeof(struct
icmphdr) just like what icmp.c did.

And for RAW socket, since there are no concept of fragmentation, should we
check the protocol and only set cork->tx_flags = 0 when the socket_type !=
SOCK_RAW

-- 
You are receiving this mail because:
You are the assignee for the bug.