sk_buff handling in packet handler
Subsystems (2)
Hi all,
My question is a development question so I hope this is the correct list to post it. If not just tell me and I will find another list...
I am developing a packet handler that I register via dev_add_pack. All is fine except that after a while the kernel crashes. I suspect my handler not doing something correct...
The handler is registered with the ETH_P_ALL list, listening on a specific interface.
After many attempt at reducing the scope of what my handler is doing I now simply do a return in my handler. When I send lots of frames to interface that I am listening to after a while I start getting kernel messages about low memory and eventually even get exception dumps.
I suspect that the handler needs to do something with the sk_buff but I am not sure what. I printed the content of the sk_buff and found that the skb_buff is not cloned (looking on the web I had found that the sk_buff should have been cloned) and that he number of users is 1.
Should I simply do a dev_kfree_skb? What are the rules governing the use of the sk_buff in a packet handler? Should I clone the sk_buff?
Also, a related question, the packet handler is expected to return an int. What should be returned?
Thanks
Claude
begin:vcard
fn:Claude Robitaille
n:Robitaille;Claude
email;internet:[email protected]
tel;work:514-764-0119
tel;cell:514-796-7225
x-mozilla-html:TRUE
version:2.1
end:vcard
Quoted 10 lines · Claude Robitaille
I suspect that the handler needs to do something with the
sk_buffbut I am not sure what. I printed the content of thesk_buffand found that theskb_buffis not cloned (looking on the web I had found that thesk_buffshould have been cloned) and that he number of users is 1.Should I simply do a
dev_kfree_skb? What are the rules governing the use of thesk_buffin a packet handler? Should I clone thesk_buff?Also, a related question, the packet handler is expected to return an int. What should be returned?
Use packet socket code as the best documentation, in particular packet_rcv, but 0 is ok, although in theory it should match NET_RX_* constants.
Signature · 1 line
Evgeniy Polyakov