.. | .. |
---|
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 | } |
---|