* skb_ip_make_writable and skbs not owned by a socket @ 2005-01-02 21:19 Patrick McHardy 2005-01-02 23:57 ` Thomas Graf 2005-01-14 5:31 ` David S. Miller 0 siblings, 2 replies; 13+ messages in thread From: Patrick McHardy @ 2005-01-02 21:19 UTC (permalink / raw) To: Rusty Russell; +Cc: David S. Miller, Netfilter Development Mailinglist Hi, skb_ip_make_writable copies the packet as soon as the data area needs to be touched. This is of course necessary for packets generated locally, but can't we mangle the data area of skbs with skb->sk == NULL without copying them ? Regards Patrick ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-02 21:19 skb_ip_make_writable and skbs not owned by a socket Patrick McHardy @ 2005-01-02 23:57 ` Thomas Graf 2005-01-03 1:36 ` Patrick McHardy 2005-01-14 5:31 ` David S. Miller 1 sibling, 1 reply; 13+ messages in thread From: Thomas Graf @ 2005-01-02 23:57 UTC (permalink / raw) To: Patrick McHardy Cc: David S. Miller, Rusty Russell, Jamal Hadi Salim, Netfilter Development Mailinglist * Patrick McHardy <41D86571.6070501@trash.net> 2005-01-02 22:19 > skb_ip_make_writable copies the packet as soon as the data area needs > to be touched. This is of course necessary for packets generated locally, > but can't we mangle the data area of skbs with skb->sk == NULL without > copying them ? Theoretically there could be a driver for a S/G capable nic producing pskbs. I'm not aware of such a driver though. Assuming there is no such driver at the moment, the question is whether to make all the paths aware as a precaution (net/sched/ is not aware as of now). I think everyone would agree if there wasn't such ia high possible performance impact respectively saving. Thoughts? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-02 23:57 ` Thomas Graf @ 2005-01-03 1:36 ` Patrick McHardy 2005-01-03 1:53 ` Patrick McHardy 0 siblings, 1 reply; 13+ messages in thread From: Patrick McHardy @ 2005-01-03 1:36 UTC (permalink / raw) To: Thomas Graf Cc: David S. Miller, Rusty Russell, Jamal Hadi Salim, Netfilter Development Mailinglist [-- Attachment #1: Type: text/plain, Size: 2267 bytes --] Thomas Graf wrote: >* Patrick McHardy <41D86571.6070501@trash.net> 2005-01-02 22:19 > > >>skb_ip_make_writable copies the packet as soon as the data area needs >>to be touched. This is of course necessary for packets generated locally, >>but can't we mangle the data area of skbs with skb->sk == NULL without >>copying them ? >> >> > >Theoretically there could be a driver for a S/G capable nic producing >pskbs. I'm not aware of such a driver though. Assuming there is no >such driver at the moment, the question is whether to make all the >paths aware as a precaution (net/sched/ is not aware as of now). I >think everyone would agree if there wasn't such ia high possible >performance impact respectively saving. Thoughts? > I was refering to a different problem. skb_ip_make_writable copies skbs when the data area needs to be mangled to avoid disturbing the tcp retransmission queue. Not sure why it is done for UDP and ICMP. My question is if we can asume it is safe to alter the data area of a skb, if it is not shared, or cloned, in the linear range and skb->sk == NULL. See the attached patch. A different question is why we can't simply do this: (cut-n-paste, I would cut at least one goto in a patch) int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) { struct sk_buff *nskb; if (writable_len > (*pskb)->len) return 0; /* Not exclusive use of packet? Must copy. */ if (skb_shared(*pskb) || skb_cloned(*pskb)) goto copy_skb; if (skb_headlen(skb) <= writable_len) return 1; goto pull_skb; copy_skb: nskb = skb_copy(*pskb, GFP_ATOMIC); if (!nskb) return 0; BUG_ON(skb_is_nonlinear(nskb)); /* Rest of kernel will get very unhappy if we pass it a suddenly-orphaned skbuff */ if ((*pskb)->sk) skb_set_owner_w(nskb, (*pskb)->sk); kfree_skb(*pskb); *pskb = nskb; return 1; pull_skb: return pskb_may_pull(*pskb, writable_len); } Packets cloned or shared with the TCP retransmission queue are already caught by the second condition. This should avoid lots of copies compared to the current code. Regards Patrick [-- Attachment #2: x --] [-- Type: text/plain, Size: 458 bytes --] ===== net/core/netfilter.c 1.37 vs edited ===== --- 1.37/net/core/netfilter.c 2004-11-13 14:41:07 +01:00 +++ edited/net/core/netfilter.c 2005-01-03 02:17:16 +01:00 @@ -691,6 +691,12 @@ if (writable_len <= (*pskb)->nh.iph->ihl*4) return 1; + if (skb->sk == NULL) { + if (skb_headlen(skb) <= writable_len) + return 1; + goto pull_skb; + } + iplen = writable_len - (*pskb)->nh.iph->ihl*4; /* DaveM says protocol headers are also modifiable. */ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-03 1:36 ` Patrick McHardy @ 2005-01-03 1:53 ` Patrick McHardy 2005-01-03 14:55 ` jamal 0 siblings, 1 reply; 13+ messages in thread From: Patrick McHardy @ 2005-01-03 1:53 UTC (permalink / raw) To: Thomas Graf Cc: David S. Miller, Rusty Russell, Jamal Hadi Salim, Netfilter Development Mailinglist [-- Attachment #1: Type: text/plain, Size: 667 bytes --] Patrick McHardy wrote: > A different question is why we can't simply do this: > > (cut-n-paste, I would cut at least one goto in a patch) > > int skb_ip_make_writable(struct sk_buff **pskb, unsigned int > writable_len) > { > struct sk_buff *nskb; > > if (writable_len > (*pskb)->len) > return 0; > > /* Not exclusive use of packet? Must copy. */ > if (skb_shared(*pskb) || skb_cloned(*pskb)) > goto copy_skb; > > if (skb_headlen(skb) <= writable_len) > return 1; This should have been >=, but is not necessary anyway, pskb_may_pull already does the same test. Real patch attached. [-- Attachment #2: x --] [-- Type: text/plain, Size: 1591 bytes --] ===== net/core/netfilter.c 1.37 vs edited ===== --- 1.37/net/core/netfilter.c 2004-11-13 14:41:07 +01:00 +++ edited/net/core/netfilter.c 2005-01-03 02:50:29 +01:00 @@ -678,7 +678,6 @@ int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) { struct sk_buff *nskb; - unsigned int iplen; if (writable_len > (*pskb)->len) return 0; @@ -687,35 +686,7 @@ if (skb_shared(*pskb) || skb_cloned(*pskb)) goto copy_skb; - /* Alexey says IP hdr is always modifiable and linear, so ok. */ - if (writable_len <= (*pskb)->nh.iph->ihl*4) - return 1; - - iplen = writable_len - (*pskb)->nh.iph->ihl*4; - - /* DaveM says protocol headers are also modifiable. */ - switch ((*pskb)->nh.iph->protocol) { - case IPPROTO_TCP: { - struct tcphdr _hdr, *hp; - hp = skb_header_pointer(*pskb, (*pskb)->nh.iph->ihl*4, - sizeof(_hdr), &_hdr); - if (hp == NULL) - goto copy_skb; - if (writable_len <= (*pskb)->nh.iph->ihl*4 + hp->doff*4) - goto pull_skb; - goto copy_skb; - } - case IPPROTO_UDP: - if (writable_len<=(*pskb)->nh.iph->ihl*4+sizeof(struct udphdr)) - goto pull_skb; - goto copy_skb; - case IPPROTO_ICMP: - if (writable_len - <= (*pskb)->nh.iph->ihl*4 + sizeof(struct icmphdr)) - goto pull_skb; - goto copy_skb; - /* Insert other cases here as desired */ - } + return pskb_may_pull(*pskb, writable_len); copy_skb: nskb = skb_copy(*pskb, GFP_ATOMIC); @@ -730,9 +701,6 @@ kfree_skb(*pskb); *pskb = nskb; return 1; - -pull_skb: - return pskb_may_pull(*pskb, writable_len); } EXPORT_SYMBOL(skb_ip_make_writable); #endif /*CONFIG_INET*/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-03 1:53 ` Patrick McHardy @ 2005-01-03 14:55 ` jamal 0 siblings, 0 replies; 13+ messages in thread From: jamal @ 2005-01-03 14:55 UTC (permalink / raw) To: Patrick McHardy Cc: David S. Miller, Rusty Russell, Netfilter Development Mailinglist Doesnt netfilter these days have some low level bridge level and arp level munging? Also i know there are UDP based apps which retransmit, but they probably keep their own copies of skbs. It does sound rude to make this change but if you are absolutely sure it doesnt affect anyone, why not. cheers, jamal On Sun, 2005-01-02 at 20:53, Patrick McHardy wrote: > Patrick McHardy wrote: > > > A different question is why we can't simply do this: > > > > (cut-n-paste, I would cut at least one goto in a patch) > > > > int skb_ip_make_writable(struct sk_buff **pskb, unsigned int > > writable_len) > > { > > struct sk_buff *nskb; > > > > if (writable_len > (*pskb)->len) > > return 0; > > > > /* Not exclusive use of packet? Must copy. */ > > if (skb_shared(*pskb) || skb_cloned(*pskb)) > > goto copy_skb; > > > > if (skb_headlen(skb) <= writable_len) > > return 1; > > This should have been >=, but is not necessary anyway, pskb_may_pull > already does the same test. Real patch attached. > > > > ______________________________________________________________________ > > ===== net/core/netfilter.c 1.37 vs edited ===== > --- 1.37/net/core/netfilter.c 2004-11-13 14:41:07 +01:00 > +++ edited/net/core/netfilter.c 2005-01-03 02:50:29 +01:00 > @@ -678,7 +678,6 @@ > int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) > { > struct sk_buff *nskb; > - unsigned int iplen; > > if (writable_len > (*pskb)->len) > return 0; > @@ -687,35 +686,7 @@ > if (skb_shared(*pskb) || skb_cloned(*pskb)) > goto copy_skb; > > - /* Alexey says IP hdr is always modifiable and linear, so ok. */ > - if (writable_len <= (*pskb)->nh.iph->ihl*4) > - return 1; > - > - iplen = writable_len - (*pskb)->nh.iph->ihl*4; > - > - /* DaveM says protocol headers are also modifiable. */ > - switch ((*pskb)->nh.iph->protocol) { > - case IPPROTO_TCP: { > - struct tcphdr _hdr, *hp; > - hp = skb_header_pointer(*pskb, (*pskb)->nh.iph->ihl*4, > - sizeof(_hdr), &_hdr); > - if (hp == NULL) > - goto copy_skb; > - if (writable_len <= (*pskb)->nh.iph->ihl*4 + hp->doff*4) > - goto pull_skb; > - goto copy_skb; > - } > - case IPPROTO_UDP: > - if (writable_len<=(*pskb)->nh.iph->ihl*4+sizeof(struct udphdr)) > - goto pull_skb; > - goto copy_skb; > - case IPPROTO_ICMP: > - if (writable_len > - <= (*pskb)->nh.iph->ihl*4 + sizeof(struct icmphdr)) > - goto pull_skb; > - goto copy_skb; > - /* Insert other cases here as desired */ > - } > + return pskb_may_pull(*pskb, writable_len); > > copy_skb: > nskb = skb_copy(*pskb, GFP_ATOMIC); > @@ -730,9 +701,6 @@ > kfree_skb(*pskb); > *pskb = nskb; > return 1; > - > -pull_skb: > - return pskb_may_pull(*pskb, writable_len); > } > EXPORT_SYMBOL(skb_ip_make_writable); > #endif /*CONFIG_INET*/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-02 21:19 skb_ip_make_writable and skbs not owned by a socket Patrick McHardy 2005-01-02 23:57 ` Thomas Graf @ 2005-01-14 5:31 ` David S. Miller 2005-01-14 5:59 ` Patrick McHardy 1 sibling, 1 reply; 13+ messages in thread From: David S. Miller @ 2005-01-14 5:31 UTC (permalink / raw) To: Patrick McHardy; +Cc: rusty, netfilter-devel On Sun, 02 Jan 2005 22:19:45 +0100 Patrick McHardy <kaber@trash.net> wrote: > skb_ip_make_writable copies the packet as soon as the data area needs > to be touched. This is of course necessary for packets generated locally, > but can't we mangle the data area of skbs with skb->sk == NULL without > copying them ? Not if they are cloned. tcpdump can still share access to the packet. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-14 5:31 ` David S. Miller @ 2005-01-14 5:59 ` Patrick McHardy 2005-01-14 6:08 ` David S. Miller 2005-01-17 21:50 ` David S. Miller 0 siblings, 2 replies; 13+ messages in thread From: Patrick McHardy @ 2005-01-14 5:59 UTC (permalink / raw) To: David S. Miller; +Cc: rusty, netfilter-devel [-- Attachment #1: Type: text/plain, Size: 834 bytes --] David S. Miller wrote: >On Sun, 02 Jan 2005 22:19:45 +0100 >Patrick McHardy <kaber@trash.net> wrote: > > > >>skb_ip_make_writable copies the packet as soon as the data area needs >>to be touched. This is of course necessary for packets generated locally, >>but can't we mangle the data area of skbs with skb->sk == NULL without >>copying them ? >> >> > >Not if they are cloned. tcpdump can still share access to the >packet. > > > I wasn't very clear in my question, it only makes sense if you look at skb_ip_make_writable :) It already checks for skb_shared || skb_cloned to decide when to copy, but additionally makes some guesses based on the protocol. I think the checks for skb_shared || skb_clones should already catch all cases where copying is necessary, and the additional cases could be removed. Regards Patrick [-- Attachment #2: x --] [-- Type: text/plain, Size: 1591 bytes --] ===== net/core/netfilter.c 1.37 vs edited ===== --- 1.37/net/core/netfilter.c 2004-11-13 14:41:07 +01:00 +++ edited/net/core/netfilter.c 2005-01-03 02:50:29 +01:00 @@ -678,7 +678,6 @@ int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) { struct sk_buff *nskb; - unsigned int iplen; if (writable_len > (*pskb)->len) return 0; @@ -687,35 +686,7 @@ if (skb_shared(*pskb) || skb_cloned(*pskb)) goto copy_skb; - /* Alexey says IP hdr is always modifiable and linear, so ok. */ - if (writable_len <= (*pskb)->nh.iph->ihl*4) - return 1; - - iplen = writable_len - (*pskb)->nh.iph->ihl*4; - - /* DaveM says protocol headers are also modifiable. */ - switch ((*pskb)->nh.iph->protocol) { - case IPPROTO_TCP: { - struct tcphdr _hdr, *hp; - hp = skb_header_pointer(*pskb, (*pskb)->nh.iph->ihl*4, - sizeof(_hdr), &_hdr); - if (hp == NULL) - goto copy_skb; - if (writable_len <= (*pskb)->nh.iph->ihl*4 + hp->doff*4) - goto pull_skb; - goto copy_skb; - } - case IPPROTO_UDP: - if (writable_len<=(*pskb)->nh.iph->ihl*4+sizeof(struct udphdr)) - goto pull_skb; - goto copy_skb; - case IPPROTO_ICMP: - if (writable_len - <= (*pskb)->nh.iph->ihl*4 + sizeof(struct icmphdr)) - goto pull_skb; - goto copy_skb; - /* Insert other cases here as desired */ - } + return pskb_may_pull(*pskb, writable_len); copy_skb: nskb = skb_copy(*pskb, GFP_ATOMIC); @@ -730,9 +701,6 @@ kfree_skb(*pskb); *pskb = nskb; return 1; - -pull_skb: - return pskb_may_pull(*pskb, writable_len); } EXPORT_SYMBOL(skb_ip_make_writable); #endif /*CONFIG_INET*/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-14 5:59 ` Patrick McHardy @ 2005-01-14 6:08 ` David S. Miller 2005-01-17 21:50 ` David S. Miller 1 sibling, 0 replies; 13+ messages in thread From: David S. Miller @ 2005-01-14 6:08 UTC (permalink / raw) To: Patrick McHardy; +Cc: rusty, netfilter-devel On Fri, 14 Jan 2005 06:59:00 +0100 Patrick McHardy <kaber@trash.net> wrote: > I think the checks for skb_shared || skb_clones should already > catch all cases where copying is necessary, and the additional cases > could be removed. You're probably right, let me think about this some more. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-14 5:59 ` Patrick McHardy 2005-01-14 6:08 ` David S. Miller @ 2005-01-17 21:50 ` David S. Miller 2005-01-17 23:13 ` Patrick McHardy 1 sibling, 1 reply; 13+ messages in thread From: David S. Miller @ 2005-01-17 21:50 UTC (permalink / raw) To: Patrick McHardy; +Cc: rusty, netfilter-devel On Fri, 14 Jan 2005 06:59:00 +0100 Patrick McHardy <kaber@trash.net> wrote: > I wasn't very clear in my question, it only makes sense if you look at > skb_ip_make_writable :) It already checks for skb_shared || skb_cloned > to decide when to copy, but additionally makes some guesses based on the > protocol. I think the checks for skb_shared || skb_clones should already > catch all cases where copying is necessary, and the additional cases > could be removed. This code is doing something different. Even if we unclone and unshare the SKB, the packet header portion can still be non-linear. It will be possible for devices to create this situation on receive. That's why we have all the pskb_may_pull() checks in all the major ipv4 protocol input paths. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-17 21:50 ` David S. Miller @ 2005-01-17 23:13 ` Patrick McHardy 2005-01-27 4:10 ` Patrick McHardy 0 siblings, 1 reply; 13+ messages in thread From: Patrick McHardy @ 2005-01-17 23:13 UTC (permalink / raw) To: David S. Miller; +Cc: rusty, netfilter-devel David S. Miller wrote: >This code is doing something different. Even if we unclone and >unshare the SKB, the packet header portion can still be non-linear. > >It will be possible for devices to create this situation on receive. >That's why we have all the pskb_may_pull() checks in all the major >ipv4 protocol input paths. > The patch already calls pskb_may_pull for unshared/uncloned skbs, so it linearizes them up to the requested size. It just replaces skb_copy by pskb_may_pull when the data area of unshared/uncloned skbs needs to be mangled. Regards Patrick ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-17 23:13 ` Patrick McHardy @ 2005-01-27 4:10 ` Patrick McHardy 2005-01-27 5:50 ` David S. Miller 0 siblings, 1 reply; 13+ messages in thread From: Patrick McHardy @ 2005-01-27 4:10 UTC (permalink / raw) To: David S. Miller; +Cc: jamal, rusty, netfilter-devel [-- Attachment #1: Type: text/plain, Size: 1115 bytes --] Dave, could you please have another look at this ? I think the patch is correct, and even necessary to make the ipt action work with targets that mangle the data area. Jamal asked me to put back the pskb_expand_head call in the ipt action, so iptables won't see cloned skbs and copy them (actions must not replace the skb), but the protocol-dependant cases in skb_ip_make_writable can cause copying anyway. I think you missed my reply to your last mail, please see below. Thanks, Patrick Patrick McHardy wrote: > David S. Miller wrote: > >> This code is doing something different. Even if we unclone and >> unshare the SKB, the packet header portion can still be non-linear. >> >> It will be possible for devices to create this situation on receive. >> That's why we have all the pskb_may_pull() checks in all the major >> ipv4 protocol input paths. >> > The patch already calls pskb_may_pull for unshared/uncloned skbs, so it > linearizes them up to the requested size. It just replaces skb_copy by > pskb_may_pull when the data area of unshared/uncloned skbs needs to be > mangled. > > Regards > Patrick > > [-- Attachment #2: x --] [-- Type: text/plain, Size: 1591 bytes --] ===== net/core/netfilter.c 1.37 vs edited ===== --- 1.37/net/core/netfilter.c 2004-11-13 14:41:07 +01:00 +++ edited/net/core/netfilter.c 2005-01-03 02:50:29 +01:00 @@ -678,7 +678,6 @@ int skb_ip_make_writable(struct sk_buff **pskb, unsigned int writable_len) { struct sk_buff *nskb; - unsigned int iplen; if (writable_len > (*pskb)->len) return 0; @@ -687,35 +686,7 @@ if (skb_shared(*pskb) || skb_cloned(*pskb)) goto copy_skb; - /* Alexey says IP hdr is always modifiable and linear, so ok. */ - if (writable_len <= (*pskb)->nh.iph->ihl*4) - return 1; - - iplen = writable_len - (*pskb)->nh.iph->ihl*4; - - /* DaveM says protocol headers are also modifiable. */ - switch ((*pskb)->nh.iph->protocol) { - case IPPROTO_TCP: { - struct tcphdr _hdr, *hp; - hp = skb_header_pointer(*pskb, (*pskb)->nh.iph->ihl*4, - sizeof(_hdr), &_hdr); - if (hp == NULL) - goto copy_skb; - if (writable_len <= (*pskb)->nh.iph->ihl*4 + hp->doff*4) - goto pull_skb; - goto copy_skb; - } - case IPPROTO_UDP: - if (writable_len<=(*pskb)->nh.iph->ihl*4+sizeof(struct udphdr)) - goto pull_skb; - goto copy_skb; - case IPPROTO_ICMP: - if (writable_len - <= (*pskb)->nh.iph->ihl*4 + sizeof(struct icmphdr)) - goto pull_skb; - goto copy_skb; - /* Insert other cases here as desired */ - } + return pskb_may_pull(*pskb, writable_len); copy_skb: nskb = skb_copy(*pskb, GFP_ATOMIC); @@ -730,9 +701,6 @@ kfree_skb(*pskb); *pskb = nskb; return 1; - -pull_skb: - return pskb_may_pull(*pskb, writable_len); } EXPORT_SYMBOL(skb_ip_make_writable); #endif /*CONFIG_INET*/ ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-27 4:10 ` Patrick McHardy @ 2005-01-27 5:50 ` David S. Miller 2005-01-27 14:41 ` Patrick McHardy 0 siblings, 1 reply; 13+ messages in thread From: David S. Miller @ 2005-01-27 5:50 UTC (permalink / raw) To: Patrick McHardy; +Cc: hadi, rusty, netfilter-devel On Thu, 27 Jan 2005 05:10:42 +0100 Patrick McHardy <kaber@trash.net> wrote: > Dave, could you please have another look at this ? I think the patch is > correct, and even necessary to make the ipt action work with targets > that mangle the data area. Jamal asked me to put back the pskb_expand_head > call in the ipt action, so iptables won't see cloned skbs and copy them > (actions must not replace the skb), but the protocol-dependant cases > in skb_ip_make_writable can cause copying anyway. I think you missed > my reply to your last mail, please see below. It's in my backlog, don't worry. I'll try to get to it tomorrow. Is it the end of the world if I defer it to 2.6.12? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: skb_ip_make_writable and skbs not owned by a socket 2005-01-27 5:50 ` David S. Miller @ 2005-01-27 14:41 ` Patrick McHardy 0 siblings, 0 replies; 13+ messages in thread From: Patrick McHardy @ 2005-01-27 14:41 UTC (permalink / raw) To: David S. Miller; +Cc: hadi, rusty, netfilter-devel David S. Miller wrote: >It's in my backlog, don't worry. I'll try to get to it tomorrow. > >Is it the end of the world if I defer it to 2.6.12? > > No, certainly not. I just wanted to make sure it didn't get lost. Regards Patrick ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2005-01-27 14:41 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2005-01-02 21:19 skb_ip_make_writable and skbs not owned by a socket Patrick McHardy 2005-01-02 23:57 ` Thomas Graf 2005-01-03 1:36 ` Patrick McHardy 2005-01-03 1:53 ` Patrick McHardy 2005-01-03 14:55 ` jamal 2005-01-14 5:31 ` David S. Miller 2005-01-14 5:59 ` Patrick McHardy 2005-01-14 6:08 ` David S. Miller 2005-01-17 21:50 ` David S. Miller 2005-01-17 23:13 ` Patrick McHardy 2005-01-27 4:10 ` Patrick McHardy 2005-01-27 5:50 ` David S. Miller 2005-01-27 14:41 ` Patrick McHardy
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.