Skip to contentSkip to conversation

sk_buff handling in packet handler

DISCUSSION Claude Robitaille 2 participants 2 messages May 16, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
Quoted 10 lines · Claude Robitaille

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?

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