nfc: fdp: fix NULL pointer dereference
authorSudip Mukherjee <sudipm.mukherjee@gmail.com>
Tue, 20 Dec 2016 21:09:04 +0000 (21:09 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Aug 2017 02:19:40 +0000 (19:19 -0700)
commit b6355fb3f5f40bbce165847d277e64896cab8f95 upstream.

We are checking phy after dereferencing it. We can print the debug
information after checking it. If phy is NULL then we will get a good
stack trace to tell us that we are in this irq handler.

Signed-off-by: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nfc/fdp/i2c.c

index 532db28145c7dafee6350fb44ca52ca4052644e4..a5d7332dfce51a12571f3fb96d87e419be5d4b98 100644 (file)
@@ -210,14 +210,14 @@ static irqreturn_t fdp_nci_i2c_irq_thread_fn(int irq, void *phy_id)
        struct sk_buff *skb;
        int r;
 
-       client = phy->i2c_dev;
-       dev_dbg(&client->dev, "%s\n", __func__);
-
        if (!phy || irq != phy->i2c_dev->irq) {
                WARN_ON_ONCE(1);
                return IRQ_NONE;
        }
 
+       client = phy->i2c_dev;
+       dev_dbg(&client->dev, "%s\n", __func__);
+
        r = fdp_nci_i2c_read(phy, &skb);
 
        if (r == -EREMOTEIO)