aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/staging/batman-adv/hard-interface.c
diff options
context:
space:
mode:
authorMarek Lindner <lindner_marek@yahoo.de>2010-02-19 16:18:11 +0100
committerGreg Kroah-Hartman <gregkh@suse.de>2010-03-03 16:43:03 -0800
commitaf71b816cdc623bc7c0b616ededbf3dadaf03156 (patch)
tree14fb2bdd9403954165cd09972484041b8b1ff125 /drivers/staging/batman-adv/hard-interface.c
parentStaging: batman-adv: avoid crash on memory allocation error (diff)
downloadlinux-dev-af71b816cdc623bc7c0b616ededbf3dadaf03156.tar.xz
linux-dev-af71b816cdc623bc7c0b616ededbf3dadaf03156.zip
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.c7
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 0f94158b2660..befd48839519 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++;