diff options
author | Marek Lindner <lindner_marek@yahoo.de> | 2010-02-19 16:18:11 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-03-03 16:43:03 -0800 |
commit | af71b816cdc623bc7c0b616ededbf3dadaf03156 (patch) | |
tree | 14fb2bdd9403954165cd09972484041b8b1ff125 /drivers/staging/batman-adv/hard-interface.c | |
parent | da6d6c7ac366ad3189e494cd78376db7a4f40d59 (diff) |
Staging: batman-adv: fix module initialization
Make sure that batman-adv does not process packets before its
initialization is complete. Some sanity checks added to the receiver
function.
Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/batman-adv/hard-interface.c')
-rw-r--r-- | drivers/staging/batman-adv/hard-interface.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/staging/batman-adv/hard-interface.c b/drivers/staging/batman-adv/hard-interface.c index 0f94158b266..befd4883951 100644 --- a/drivers/staging/batman-adv/hard-interface.c +++ b/drivers/staging/batman-adv/hard-interface.c @@ -432,6 +432,9 @@ int batman_skb_recv(struct sk_buff *skb, struct net_device *dev, if (!skb) goto err_out; + if (atomic_read(&module_state) != MODULE_ACTIVE) + goto err_free; + /* packet should hold at least type and version */ if (unlikely(skb_headlen(skb) < 2)) goto err_free; @@ -445,6 +448,10 @@ int batman_skb_recv(struct sk_buff *skb, struct net_device *dev, if (!batman_if) goto err_free; + /* discard frames on not active interfaces */ + if (batman_if->if_active != IF_ACTIVE) + goto err_free; + stats = (struct net_device_stats *)dev_get_stats(skb->dev); if (stats) { stats->rx_packets++; |