| .. | .. |
|---|
| 287 | 287 | |
|---|
| 288 | 288 | ret = pisp_dmy_ioctl(sd, cmd, inf); |
|---|
| 289 | 289 | if (!ret) |
|---|
| 290 | | - ret = copy_to_user(up, inf, sizeof(*inf)); |
|---|
| 290 | + if (copy_to_user(up, inf, sizeof(*inf))) { |
|---|
| 291 | + kfree(inf); |
|---|
| 292 | + return -EFAULT; |
|---|
| 293 | + } |
|---|
| 291 | 294 | kfree(inf); |
|---|
| 292 | 295 | break; |
|---|
| 293 | 296 | case RKMODULE_AWB_CFG: |
|---|
| .. | .. |
|---|
| 297 | 300 | return ret; |
|---|
| 298 | 301 | } |
|---|
| 299 | 302 | |
|---|
| 300 | | - ret = copy_from_user(cfg, up, sizeof(*cfg)); |
|---|
| 301 | | - if (!ret) |
|---|
| 302 | | - ret = pisp_dmy_ioctl(sd, cmd, cfg); |
|---|
| 303 | + if (copy_from_user(cfg, up, sizeof(*cfg))) { |
|---|
| 304 | + kfree(cfg); |
|---|
| 305 | + return -EFAULT; |
|---|
| 306 | + } |
|---|
| 307 | + |
|---|
| 308 | + ret = pisp_dmy_ioctl(sd, cmd, cfg); |
|---|
| 303 | 309 | kfree(cfg); |
|---|
| 304 | 310 | break; |
|---|
| 305 | 311 | default: |
|---|