[9610][ERD] drivers: muic: fix prevent CID 237158
authorKim Taejeong <tj.kim@samsung.com>
Tue, 28 Aug 2018 00:43:27 +0000 (09:43 +0900)
committerhskang <hs1218.kang@samsung.com>
Thu, 30 Aug 2018 10:58:45 +0000 (19:58 +0900)
- Fix problem of Dereference before null check.
- System comment below:
1617 static irqreturn_t s2mu004_muic_vbus_isr(int irq, void *data)
1618 {
1619         struct s2mu004_muic_data *muic_data = data;
/* deref_ptr: Directly dereferencing pointer muic_data. */
1620         struct muic_platform_data *muic_pdata = muic_data->pdata;
1621
/* CID 237158 (#1 of 1): Dereference before null check (REVERSE_INULL)
 * check_after_deref: Null-checking muic_data suggests that it may be null,
 * but it has already been dereferenced on all paths leading to the check.
 */
1622         if (muic_data == NULL || muic_pdata == NULL) {
1623                 pr_err("%s, data NULL\n", __func__);
1624                 return IRQ_NONE;
1625         }

Change-Id: Ia060128382d25a29d6bad91a0436e236dfb3cd82
Signed-off-by: Kim Taejeong <tj.kim@samsung.com>
drivers/muic/s2mu004-muic.c

index 0d667d8dcb8a78b8574b76dc9b54abe29aabd3be..caa86f4d74e1ac200f7125b2b2d44cc61f1c982a 100644 (file)
@@ -1635,10 +1635,16 @@ irq_skip:
 static irqreturn_t s2mu004_muic_vbus_isr(int irq, void *data)
 {
        struct s2mu004_muic_data *muic_data = data;
-       struct muic_platform_data *muic_pdata = muic_data->pdata;
+       struct muic_platform_data *muic_pdata;
+
+       if (muic_data == NULL) {
+               pr_err("%s, data NULL (Line:%d)\n", __func__, __LINE__);
+               return IRQ_NONE;
+       }
 
-       if (muic_data == NULL || muic_pdata == NULL) {
-               pr_err("%s, data NULL\n", __func__);
+       muic_pdata = muic_data->pdata;
+       if (muic_pdata == NULL) {
+               pr_err("%s, data NULL (Line:%d)\n", __func__, __LINE__);
                return IRQ_NONE;
        }
 
@@ -1824,7 +1830,7 @@ static int s2mu004_muic_irq_init(struct s2mu004_muic_data *muic_data)
                __func__, muic_data->irq_attach, muic_data->irq_detach, muic_data->irq_rid_chg,
                        muic_data->irq_vbus_on);
        pr_info("muic-rsvd_attach(%d), muic-adc_change(%d), muic-av_charge(%d), muic-vbus_off(%d)\n",
-               muic_data->irq_rsvd_attach, muic_data->irq_adc_change, 
+               muic_data->irq_rsvd_attach, muic_data->irq_adc_change,
                muic_data->irq_av_charge, muic_data->irq_vbus_off);
 
        return ret;