mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	extcon: max8997: Check the pointer of platform data to protect null pointer error
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.choi@samsung.com> Signed-off-by: Myungjoo Ham <myungjoo.ham@samsung.com>
This commit is contained in:
		
							parent
							
								
									f6161aa153
								
							
						
					
					
						commit
						810d601f07
					
				
					 1 changed files with 33 additions and 21 deletions
				
			
		| 
						 | 
				
			
			@ -712,30 +712,46 @@ 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;
 | 
			
		||||
		struct max8997_muic_platform_data *muic_pdata
 | 
			
		||||
			= pdata->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);
 | 
			
		||||
		}
 | 
			
		||||
		/* 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;
 | 
			
		||||
		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;
 | 
			
		||||
		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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue