| .. | .. |
|---|
| 287 | 287 | u8 i; |
|---|
| 288 | 288 | u16 d; |
|---|
| 289 | 289 | |
|---|
| 290 | + if (size < 2) |
|---|
| 291 | + return 0; |
|---|
| 292 | + |
|---|
| 290 | 293 | for (i = 0; i < size; i++) { |
|---|
| 291 | 294 | if (value < table[i]) |
|---|
| 292 | 295 | break; |
|---|
| .. | .. |
|---|
| 2101 | 2104 | FINISH_CHRG_CUR2 : FINISH_CHRG_CUR1; |
|---|
| 2102 | 2105 | finish_sec = base2sec(di->finish_base); |
|---|
| 2103 | 2106 | soc_sec = di->fcc * 3600 / 100 / DIV(finish_current); |
|---|
| 2107 | + if (soc_sec == 0) |
|---|
| 2108 | + soc_sec = 1; |
|---|
| 2104 | 2109 | plus_soc = finish_sec / DIV(soc_sec); |
|---|
| 2105 | 2110 | if (finish_sec > soc_sec) { |
|---|
| 2106 | 2111 | rest = finish_sec % soc_sec; |
|---|
| .. | .. |
|---|
| 3240 | 3245 | } |
|---|
| 3241 | 3246 | |
|---|
| 3242 | 3247 | pdata->ocv_size = length / sizeof(u32); |
|---|
| 3243 | | - if (pdata->ocv_size <= 0) { |
|---|
| 3248 | + if (pdata->ocv_size < 2) { |
|---|
| 3244 | 3249 | dev_err(dev, "invalid ocv table\n"); |
|---|
| 3245 | 3250 | return -EINVAL; |
|---|
| 3246 | 3251 | } |
|---|