2006-10-11 12:02:33

by Chava Leviatan

[permalink] [raw]
Subject: kernel thread and cahche memeory at 2.4




Hi ,


I am trying to understand whether there is any context (thread wise)
involved when I do alloc_skb.


I have a kernel module that runs a kernel thread. (2.4.18 , regular PC with
2 ethernet interfaces)
That thread generates an ICMP packet every 50 milisec. It does it as
follows:

- call to alloc_skb
- fill ip header and icmp header
- fill in the necessary skb fields
- call to ip_rcv to inject the packet into the stack

Al of that worked just fine , and I was able to inspect the outgoing packets
through ethereal.
The problem occured while I did a rmmod for that module - the machine just
crashed (reset )

After spending some time in debugging this problem , I added a short delay
at my exit function before
the stop thread call. I have discovered that the last call to __kfree_skb
from net_tx_action must come while
my kernel thread is still alive .

I am trying to understand why is it so . Is there any importance to the
context that had performed the alloc ?


Thanks for any tip,
Chava