@@ -328,6 +328,7 @@ static char *bl_pinmux_str[] = {
328
328
"pwm_combo_0_1_on" , /* 2 */
329
329
"pwm_combo_0_vs_1_on" , /* 3 */
330
330
"pwm_combo_0_1_vs_on" , /* 4 */
331
+ "none" ,
331
332
};
332
333
333
334
static void bl_pwm_pinmux_set (struct bl_config_s * bconf )
@@ -1070,6 +1071,7 @@ static char *bl_pwm_name[] = {
1070
1071
"PWM_E" ,
1071
1072
"PWM_F" ,
1072
1073
"PWM_VS" ,
1074
+ "invalid" ,
1073
1075
};
1074
1076
1075
1077
enum bl_pwm_port_e bl_pwm_str_to_pwm (const char * str )
@@ -1271,7 +1273,9 @@ static int aml_bl_config_load_from_dts(struct bl_config_s *bconf,
1271
1273
BLERR ("failed to get bl_name\n" );
1272
1274
str = "backlight" ;
1273
1275
}
1274
- strcpy (bconf -> name , str );
1276
+ strncpy (bconf -> name , str , BL_NAME_MAX );
1277
+ /* ensure string ending */
1278
+ bconf -> name [BL_NAME_MAX - 1 ] = '\0' ;
1275
1279
1276
1280
ret = of_property_read_u32_array (child , "bl_level_default_uboot_kernel" ,
1277
1281
& bl_para [0 ], 2 );
@@ -1591,9 +1595,10 @@ static int aml_bl_config_load_from_unifykey(struct bl_config_s *bconf)
1591
1595
1592
1596
/* basic: 30byte */
1593
1597
p = para + LCD_UKEY_HEAD_SIZE ;
1594
- * (p + LCD_UKEY_BL_NAME - 1 ) = '\0' ; /* ensure string ending */
1595
1598
str = (const char * )p ;
1596
- strcpy (bconf -> name , str );
1599
+ strncpy (bconf -> name , str , BL_NAME_MAX );
1600
+ /* ensure string ending */
1601
+ bconf -> name [BL_NAME_MAX - 1 ] = '\0' ;
1597
1602
p += LCD_UKEY_BL_NAME ;
1598
1603
1599
1604
/* level: 6byte */
@@ -2531,33 +2536,61 @@ static ssize_t bl_debug_pwm_store(struct class *class,
2531
2536
case 'f' :
2532
2537
if (buf [3 ] == 'q' ) { /* frequency */
2533
2538
ret = sscanf (buf , "freq %d %d" , & index , & val );
2534
- bl_debug_pwm_set (index , val , BL_DEBUG_PWM_FREQ );
2539
+ if (ret == 2 )
2540
+ bl_debug_pwm_set (index , val , BL_DEBUG_PWM_FREQ );
2541
+ else
2542
+ BLERR ("invalid parameters\n" );
2535
2543
} else if (buf [3 ] == 'e' ) { /* duty free */
2536
2544
ret = sscanf (buf , "free %d" , & val );
2537
- bl_pwm_duty_free = (unsigned char )val ;
2538
- BLPR ("set bl_pwm_duty_free: %d\n" , bl_pwm_duty_free );
2545
+ if (ret == 1 ) {
2546
+ bl_pwm_duty_free = (unsigned char )val ;
2547
+ BLPR ("set bl_pwm_duty_free: %d\n" ,
2548
+ bl_pwm_duty_free );
2549
+ } else {
2550
+ BLERR ("invalid parameters\n" );
2551
+ }
2539
2552
}
2540
2553
break ;
2541
2554
case 'd' : /* duty */
2542
2555
ret = sscanf (buf , "duty %d %d" , & index , & val );
2543
- bl_debug_pwm_set (index , val , BL_DEBUG_PWM_DUTY );
2556
+ if (ret == 2 )
2557
+ bl_debug_pwm_set (index , val , BL_DEBUG_PWM_DUTY );
2558
+ else
2559
+ BLERR ("invalid parameters\n" );
2544
2560
break ;
2545
2561
case 'p' : /* polarity */
2546
2562
ret = sscanf (buf , "pol %d %d" , & index , & val );
2547
- bl_debug_pwm_set (index , val , BL_DEBUG_PWM_POL );
2563
+ if (ret == 2 )
2564
+ bl_debug_pwm_set (index , val , BL_DEBUG_PWM_POL );
2565
+ else
2566
+ BLERR ("invalid parameters\n" );
2548
2567
break ;
2549
2568
case 'b' : /* bypass */
2550
2569
ret = sscanf (buf , "bypass %d" , & val );
2551
- bl_pwm_bypass = (unsigned char )val ;
2552
- BLPR ("set bl_pwm_bypass: %d\n" , bl_pwm_bypass );
2570
+ if (ret == 1 ) {
2571
+ bl_pwm_bypass = (unsigned char )val ;
2572
+ BLPR ("set bl_pwm_bypass: %d\n" , bl_pwm_bypass );
2573
+ } else {
2574
+ BLERR ("invalid parameters\n" );
2575
+ }
2553
2576
break ;
2554
2577
case 'm' :
2555
2578
if (buf [1 ] == 'a' ) { /* max */
2556
2579
ret = sscanf (buf , "max %d %d" , & index , & val );
2557
- bl_debug_pwm_set (index , val , BL_DEBUG_PWM_DUTY_MAX );
2580
+ if (ret == 2 ) {
2581
+ bl_debug_pwm_set (index , val ,
2582
+ BL_DEBUG_PWM_DUTY_MAX );
2583
+ } else {
2584
+ BLERR ("invalid parameters\n" );
2585
+ }
2558
2586
} else if (buf [1 ] == 'i' ) { /* min */
2559
2587
ret = sscanf (buf , "min %d %d" , & index , & val );
2560
- bl_debug_pwm_set (index , val , BL_DEBUG_PWM_DUTY_MIN );
2588
+ if (ret == 2 ) {
2589
+ bl_debug_pwm_set (index , val ,
2590
+ BL_DEBUG_PWM_DUTY_MIN );
2591
+ } else {
2592
+ BLERR ("invalid parameters\n" );
2593
+ }
2561
2594
}
2562
2595
break ;
2563
2596
default :
@@ -2591,8 +2624,10 @@ static ssize_t bl_debug_power_store(struct class *class,
2591
2624
unsigned int temp = 0 ;
2592
2625
2593
2626
ret = kstrtouint (buf , 10 , & temp );
2594
- if (ret != 0 )
2627
+ if (ret != 0 ) {
2628
+ BLERR ("invalid data\n" );
2595
2629
return - EINVAL ;
2630
+ }
2596
2631
2597
2632
BLPR ("power control: %u\n" , temp );
2598
2633
if ((bl_drv -> state & BL_STATE_LCD_ON ) == 0 ) {
@@ -2680,19 +2715,14 @@ static ssize_t bl_debug_print_store(struct class *class,
2680
2715
}
2681
2716
2682
2717
static struct class_attribute bl_debug_class_attrs [] = {
2683
- __ATTR (help , 0644 , bl_debug_help , NULL ),
2684
- __ATTR (status , 0644 , bl_status_read , NULL ),
2685
- __ATTR (pwm , 0644 , bl_debug_pwm_show ,
2686
- bl_debug_pwm_store ),
2687
- __ATTR (power , 0644 , bl_debug_power_show ,
2688
- bl_debug_power_store ),
2689
- __ATTR (delay , 0644 , bl_debug_delay_show ,
2690
- bl_debug_delay_store ),
2691
- __ATTR (key_valid , 0644 , bl_debug_key_valid_show , NULL ),
2692
- __ATTR (config_load , 0644 ,
2693
- bl_debug_config_load_show , NULL ),
2694
- __ATTR (print , 0644 , bl_debug_print_show ,
2695
- bl_debug_print_store ),
2718
+ __ATTR (help , 0444 , bl_debug_help , NULL ),
2719
+ __ATTR (status , 0444 , bl_status_read , NULL ),
2720
+ __ATTR (pwm , 0644 , bl_debug_pwm_show , bl_debug_pwm_store ),
2721
+ __ATTR (power , 0644 , bl_debug_power_show , bl_debug_power_store ),
2722
+ __ATTR (delay , 0644 , bl_debug_delay_show , bl_debug_delay_store ),
2723
+ __ATTR (key_valid , 0444 , bl_debug_key_valid_show , NULL ),
2724
+ __ATTR (config_load , 0444 , bl_debug_config_load_show , NULL ),
2725
+ __ATTR (print , 0644 , bl_debug_print_show , bl_debug_print_store ),
2696
2726
};
2697
2727
2698
2728
static int aml_bl_creat_class (void )
0 commit comments