From 7569a91ef3abb362133aeba16d11c44c4d1c66e2 Mon Sep 17 00:00:00 2001 From: Kim Taejeong Date: Tue, 28 Aug 2018 09:43:27 +0900 Subject: [PATCH] [9610][ERD] drivers: muic: fix prevent CID 237158 - 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 --- drivers/muic/s2mu004-muic.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/muic/s2mu004-muic.c b/drivers/muic/s2mu004-muic.c index 0d667d8dcb8a..caa86f4d74e1 100644 --- a/drivers/muic/s2mu004-muic.c +++ b/drivers/muic/s2mu004-muic.c @@ -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; -- 2.20.1