patchThe GNU Hurd - Patches: patch #6851, Reassigned to another tracker...

 
 

You are not allowed to post comments on this tracker with your current authentication level.

patch #6851: Reassigned to another tracker [was: fix a bug in BPF]

Submitter:  Zheng Da <zhengda>
Submitted:  Sun 21 Jun 2009 01:36:19 AM UTC
   
 
Category:  GNU Mach Priority:  5 - Normal
Status:  Done Privacy:  Public
Assigned to:  zhengda Open/Closed:  Closed
Planned Release:  None
Wiki-like text discussion box: 


Wed 14 Oct 2009 08:07:33 AM UTC, comment #5: 

THIS ITEM WAS REASSIGNED TO BUG #27698


Please, do not post any new comments to this item.

Thomas Schwinge <tschwinge>
Group administrator
Thu 30 Jul 2009 03:25:21 AM UTC, comment #4: 

The only user of packet_header that I can see is NPF. It requires more data copy in order to remove the packet_header before delivering the packet to the user space, I guess. but I don't understand the implementation of NPF.

Zheng Da <zhengda>
Group Member
Wed 29 Jul 2009 09:04:49 AM UTC, comment #3: 


> The packet delivered from gnumach should have the packet header. NPF returns the packet_header and pfinet always assumes that the packet from gnumach has the packet_header.


OK, I understand that, and it is fine, but is there a specific reason to send package_header to user-space?  (That is,  if it's not required, then we should perhaps change pfinet and net_filter to not handle it?)  If I understand the code correctly, packets that go from pfinet to the kernel to be sent out, do not contain the packet_header, but packets that go from the kernel to pfinet do contain the packet_header.  Why this asymmetry?  Perhaps I fail to understand what this packet_header is actually good for.  (All that is unrelated to this bug report, of course, but while we're at it...)


> For your first question, the return value of net_do_filter is boolean, i.e., it can only be passed or not passed, but bpf_do_filter returns the size of the data that passes the filter.


OK, I see.  The code could be written in a way that this is more obvious...  (15 years old code, I know.)

My question also was whether net_do_filter should be changed to not handle the packet_header-part of the packet, as that is not related to the actual packet data (as I understand it), and thus should not be involved in deciding whether to allow or deny a given packet.  (That's also unrelated to this bug report.)


Given the same instructions as in bug #20612, please install this patch.  (And then we can think about the other issues I'm talking above.)

Thomas Schwinge <tschwinge>
Group administrator
Wed 29 Jul 2009 08:15:10 AM UTC, comment #2: 

The packet delivered from gnumach should have the packet header. NPF returns the packet_header and pfinet always assumes that the packet from gnumach has the packet_header.

For your first question, the return value of net_do_filter is boolean, i.e., it can only be passed or not passed, but bpf_do_filter returns the size of the data that passes the filter.

bpf_do_filter(infp, net_kmsg(kmsg)->packet + sizeof(struct packet_header), count, net_kmsg(kmsg)->header, ifp->if_header_size, &hash_headp, &entp) is simply wrong because the length of the packet data passed to bpf_do_filter isn't 'count' any more.

Zheng Da <zhengda>
Group Member
Tue 28 Jul 2009 12:53:10 PM UTC, comment #1: 

I had a look at this.  In general, the patch seems to be correct.  Two questions: Why isn't the same adjustment being done for net_do_filter, or why doesn't it have to be done?  Why do we (have to) return the packet_header to user-space?

Thomas Schwinge <tschwinge>
Group administrator
Sun 21 Jun 2009 01:36:19 AM UTC, original submission:  

THIS ITEM WAS REASSIGNED TO BUG #27698
The packet data passed to BPF should exclude the packet_header.
The amount of a packet that returns to the user space should include packet_header.

Zheng Da <zhengda>
Group Member

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

No files currently attached

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -email is unavailable- added by tschwinge (Posted a comment)
  • -email is unavailable- added by zhengda (Submitted the item)
  •  

    There are 0 votes so far. Votes easily highlight which items people would like to see resolved in priority, independently of the priority of the item set by tracker managers.

     

    Follow 4 latest changes.

    Date Changed by Updated Field Previous Value => Replaced by
    2009-10-14 tschwinge Reassign ItemThe GNU Hurd, patch #6851 The GNU Hurd, bug #27698
    2009-10-14 tschwinge StatusWorks For Me Done
        Assigned toNone zhengda
    2009-06-21 zhengda Attached File- Added bpf.patch, #18298

    Back to the top

    Powered by Savane 3.13-d3ae.
    Corresponding source code