Staging: batman-adv: Don't dereference unchecked incoming soft_iface
authorSven Eckelmann <sven.eckelmann@gmx.de>
Tue, 19 Oct 2010 09:59:10 +0000 (11:59 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 19 Oct 2010 17:04:16 +0000 (10:04 -0700)
send_packet derefenced forw_packet->if_incoming and checked if
forw_packet->if_incoming is NULL.

This cannot happen, but still makes irritates when reading through the
functions.

Reported-by: Dan Carpenter <error27@gmail.com>
Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/batman-adv/send.c

index 5d57ef5120b064c45a37cd6fb63f1c2663587373..903286159b6ec4132a263c75001f130c7479da7b 100644 (file)
@@ -160,8 +160,8 @@ static void send_packet_to_if(struct forw_packet *forw_packet,
 static void send_packet(struct forw_packet *forw_packet)
 {
        struct batman_if *batman_if;
-       struct net_device *soft_iface = forw_packet->if_incoming->soft_iface;
-       struct bat_priv *bat_priv = netdev_priv(soft_iface);
+       struct net_device *soft_iface;
+       struct bat_priv *bat_priv;
        struct batman_packet *batman_packet =
                (struct batman_packet *)(forw_packet->skb->data);
        unsigned char directlink = (batman_packet->flags & DIRECTLINK ? 1 : 0);
@@ -172,6 +172,9 @@ static void send_packet(struct forw_packet *forw_packet)
                return;
        }
 
+       soft_iface = forw_packet->if_incoming->soft_iface;
+       bat_priv = netdev_priv(soft_iface);
+
        if (forw_packet->if_incoming->if_status != IF_ACTIVE)
                return;