[PATCH 1/3] extcon: max8997: Check the pointer of platform data to protect null pointer error

2013-03-13 Thread Chanwoo Choi
This patch check the pointer of platform data to protect
kernel panic when platform data is not used and code clean.

Signed-off-by: Chanwoo Choi 
Signed-off-by: Myungjoo Ham 
---
 drivers/extcon/extcon-max8997.c | 56 +
 1 file changed, 34 insertions(+), 22 deletions(-)

diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c
index e636d95..69641bc 100644
--- a/drivers/extcon/extcon-max8997.c
+++ b/drivers/extcon/extcon-max8997.c
@@ -712,29 +712,45 @@ static int max8997_muic_probe(struct platform_device 
*pdev)
goto err_irq;
}
 
-   /* Initialize registers according to platform data */
if (pdata->muic_pdata) {
-   struct max8997_muic_platform_data *mdata = info->muic_pdata;
-
-   for (i = 0; i < mdata->num_init_data; i++) {
-   max8997_write_reg(info->muic, mdata->init_data[i].addr,
-   mdata->init_data[i].data);
+   struct max8997_muic_platform_data *muic_pdata
+   = pdata->muic_pdata;
+
+   /* Initialize registers according to platform data */
+   for (i = 0; i < muic_pdata->num_init_data; i++) {
+   max8997_write_reg(info->muic,
+   muic_pdata->init_data[i].addr,
+   muic_pdata->init_data[i].data);
}
-   }
 
-   /*
-* Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
-* h/w path of COMP2/COMN1 on CONTROL1 register.
-*/
-   if (pdata->muic_pdata->path_uart)
-   info->path_uart = pdata->muic_pdata->path_uart;
-   else
-   info->path_uart = CONTROL1_SW_UART;
+   /*
+* Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
+* h/w path of COMP2/COMN1 on CONTROL1 register.
+*/
+   if (muic_pdata->path_uart)
+   info->path_uart = muic_pdata->path_uart;
+   else
+   info->path_uart = CONTROL1_SW_UART;
 
-   if (pdata->muic_pdata->path_usb)
-   info->path_usb = pdata->muic_pdata->path_usb;
-   else
+   if (muic_pdata->path_usb)
+   info->path_usb = muic_pdata->path_usb;
+   else
+   info->path_usb = CONTROL1_SW_USB;
+
+   /*
+* Default delay time for detecting cable state
+* after certain time.
+*/
+   if (muic_pdata->detcable_delay_ms)
+   delay_jiffies =
+   msecs_to_jiffies(muic_pdata->detcable_delay_ms);
+   else
+   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
+   } else {
+   info->path_uart = CONTROL1_SW_UART;
info->path_usb = CONTROL1_SW_USB;
+   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
+   }
 
/* Set initial path for UART */
 max8997_muic_set_path(info, info->path_uart, true);
@@ -751,10 +767,6 @@ static int max8997_muic_probe(struct platform_device *pdev)
 * driver should notify cable state to upper layer.
 */
INIT_DELAYED_WORK(>wq_detcable, max8997_muic_detect_cable_wq);
-   if (pdata->muic_pdata->detcable_delay_ms)
-   delay_jiffies = 
msecs_to_jiffies(pdata->muic_pdata->detcable_delay_ms);
-   else
-   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
schedule_delayed_work(>wq_detcable, delay_jiffies);
 
return 0;
-- 
1.8.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 1/3] extcon: max8997: Check the pointer of platform data to protect null pointer error

2013-03-13 Thread Chanwoo Choi
This patch check the pointer of platform data to protect
kernel panic when platform data is not used and code clean.

Signed-off-by: Chanwoo Choi cw00.c...@samsung.com
Signed-off-by: Myungjoo Ham myungjoo@samsung.com
---
 drivers/extcon/extcon-max8997.c | 56 +
 1 file changed, 34 insertions(+), 22 deletions(-)

diff --git a/drivers/extcon/extcon-max8997.c b/drivers/extcon/extcon-max8997.c
index e636d95..69641bc 100644
--- a/drivers/extcon/extcon-max8997.c
+++ b/drivers/extcon/extcon-max8997.c
@@ -712,29 +712,45 @@ static int max8997_muic_probe(struct platform_device 
*pdev)
goto err_irq;
}
 
-   /* Initialize registers according to platform data */
if (pdata-muic_pdata) {
-   struct max8997_muic_platform_data *mdata = info-muic_pdata;
-
-   for (i = 0; i  mdata-num_init_data; i++) {
-   max8997_write_reg(info-muic, mdata-init_data[i].addr,
-   mdata-init_data[i].data);
+   struct max8997_muic_platform_data *muic_pdata
+   = pdata-muic_pdata;
+
+   /* Initialize registers according to platform data */
+   for (i = 0; i  muic_pdata-num_init_data; i++) {
+   max8997_write_reg(info-muic,
+   muic_pdata-init_data[i].addr,
+   muic_pdata-init_data[i].data);
}
-   }
 
-   /*
-* Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
-* h/w path of COMP2/COMN1 on CONTROL1 register.
-*/
-   if (pdata-muic_pdata-path_uart)
-   info-path_uart = pdata-muic_pdata-path_uart;
-   else
-   info-path_uart = CONTROL1_SW_UART;
+   /*
+* Default usb/uart path whether UART/USB or AUX_UART/AUX_USB
+* h/w path of COMP2/COMN1 on CONTROL1 register.
+*/
+   if (muic_pdata-path_uart)
+   info-path_uart = muic_pdata-path_uart;
+   else
+   info-path_uart = CONTROL1_SW_UART;
 
-   if (pdata-muic_pdata-path_usb)
-   info-path_usb = pdata-muic_pdata-path_usb;
-   else
+   if (muic_pdata-path_usb)
+   info-path_usb = muic_pdata-path_usb;
+   else
+   info-path_usb = CONTROL1_SW_USB;
+
+   /*
+* Default delay time for detecting cable state
+* after certain time.
+*/
+   if (muic_pdata-detcable_delay_ms)
+   delay_jiffies =
+   msecs_to_jiffies(muic_pdata-detcable_delay_ms);
+   else
+   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
+   } else {
+   info-path_uart = CONTROL1_SW_UART;
info-path_usb = CONTROL1_SW_USB;
+   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
+   }
 
/* Set initial path for UART */
 max8997_muic_set_path(info, info-path_uart, true);
@@ -751,10 +767,6 @@ static int max8997_muic_probe(struct platform_device *pdev)
 * driver should notify cable state to upper layer.
 */
INIT_DELAYED_WORK(info-wq_detcable, max8997_muic_detect_cable_wq);
-   if (pdata-muic_pdata-detcable_delay_ms)
-   delay_jiffies = 
msecs_to_jiffies(pdata-muic_pdata-detcable_delay_ms);
-   else
-   delay_jiffies = msecs_to_jiffies(DELAY_MS_DEFAULT);
schedule_delayed_work(info-wq_detcable, delay_jiffies);
 
return 0;
-- 
1.8.0

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/