fore200e: Fix incorrect checks of NULL pointer dereference
[ Upstream commit bbd20c939c8aa3f27fa30e86691af250bf92973a ] In fore200e_send and fore200e_close, the pointers from the arguments are dereferenced in the variable declaration block and then checked for NULL. The patch fixes these issues by avoiding NULL pointer dereferences. Signed-off-by: Aditya Pakki <pakki001@umn.edu> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
85a19b0e31
commit
8a3bc6e31b
@@ -1504,12 +1504,14 @@ fore200e_open(struct atm_vcc *vcc)
|
||||
static void
|
||||
fore200e_close(struct atm_vcc* vcc)
|
||||
{
|
||||
struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
|
||||
struct fore200e_vcc* fore200e_vcc;
|
||||
struct fore200e* fore200e;
|
||||
struct fore200e_vc_map* vc_map;
|
||||
unsigned long flags;
|
||||
|
||||
ASSERT(vcc);
|
||||
fore200e = FORE200E_DEV(vcc->dev);
|
||||
|
||||
ASSERT((vcc->vpi >= 0) && (vcc->vpi < 1<<FORE200E_VPI_BITS));
|
||||
ASSERT((vcc->vci >= 0) && (vcc->vci < 1<<FORE200E_VCI_BITS));
|
||||
|
||||
@@ -1554,10 +1556,10 @@ fore200e_close(struct atm_vcc* vcc)
|
||||
static int
|
||||
fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
{
|
||||
struct fore200e* fore200e = FORE200E_DEV(vcc->dev);
|
||||
struct fore200e_vcc* fore200e_vcc = FORE200E_VCC(vcc);
|
||||
struct fore200e* fore200e;
|
||||
struct fore200e_vcc* fore200e_vcc;
|
||||
struct fore200e_vc_map* vc_map;
|
||||
struct host_txq* txq = &fore200e->host_txq;
|
||||
struct host_txq* txq;
|
||||
struct host_txq_entry* entry;
|
||||
struct tpd* tpd;
|
||||
struct tpd_haddr tpd_haddr;
|
||||
@@ -1570,9 +1572,18 @@ fore200e_send(struct atm_vcc *vcc, struct sk_buff *skb)
|
||||
unsigned char* data;
|
||||
unsigned long flags;
|
||||
|
||||
ASSERT(vcc);
|
||||
ASSERT(fore200e);
|
||||
ASSERT(fore200e_vcc);
|
||||
if (!vcc)
|
||||
return -EINVAL;
|
||||
|
||||
fore200e = FORE200E_DEV(vcc->dev);
|
||||
fore200e_vcc = FORE200E_VCC(vcc);
|
||||
|
||||
if (!fore200e)
|
||||
return -EINVAL;
|
||||
|
||||
txq = &fore200e->host_txq;
|
||||
if (!fore200e_vcc)
|
||||
return -EINVAL;
|
||||
|
||||
if (!test_bit(ATM_VF_READY, &vcc->flags)) {
|
||||
DPRINTK(1, "VC %d.%d.%d not ready for tx\n", vcc->itf, vcc->vpi, vcc->vpi);
|
||||
|
||||
Reference in New Issue
Block a user