|
@@ -305,7 +305,8 @@ static long ts72xx_wdt_ioctl(struct file *file, unsigned int cmd,
|
|
|
|
|
|
switch (cmd) {
|
|
|
case WDIOC_GETSUPPORT:
|
|
|
- error = copy_to_user(argp, &winfo, sizeof(winfo));
|
|
|
+ if (copy_to_user(argp, &winfo, sizeof(winfo)))
|
|
|
+ error = -EFAULT;
|
|
|
break;
|
|
|
|
|
|
case WDIOC_GETSTATUS:
|
|
@@ -320,10 +321,9 @@ static long ts72xx_wdt_ioctl(struct file *file, unsigned int cmd,
|
|
|
case WDIOC_SETOPTIONS: {
|
|
|
int options;
|
|
|
|
|
|
- if (get_user(options, p)) {
|
|
|
- error = -EFAULT;
|
|
|
+ error = get_user(options, p);
|
|
|
+ if (error)
|
|
|
break;
|
|
|
- }
|
|
|
|
|
|
error = -EINVAL;
|
|
|
|
|
@@ -341,30 +341,26 @@ static long ts72xx_wdt_ioctl(struct file *file, unsigned int cmd,
|
|
|
|
|
|
case WDIOC_SETTIMEOUT: {
|
|
|
int new_timeout;
|
|
|
+ int regval;
|
|
|
|
|
|
- if (get_user(new_timeout, p)) {
|
|
|
- error = -EFAULT;
|
|
|
- } else {
|
|
|
- int regval;
|
|
|
-
|
|
|
- regval = timeout_to_regval(new_timeout);
|
|
|
- if (regval < 0) {
|
|
|
- error = -EINVAL;
|
|
|
- } else {
|
|
|
- ts72xx_wdt_stop(wdt);
|
|
|
- wdt->regval = regval;
|
|
|
- ts72xx_wdt_start(wdt);
|
|
|
- }
|
|
|
- }
|
|
|
+ error = get_user(new_timeout, p);
|
|
|
if (error)
|
|
|
break;
|
|
|
|
|
|
+ regval = timeout_to_regval(new_timeout);
|
|
|
+ if (regval < 0) {
|
|
|
+ error = regval;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ ts72xx_wdt_stop(wdt);
|
|
|
+ wdt->regval = regval;
|
|
|
+ ts72xx_wdt_start(wdt);
|
|
|
+
|
|
|
/*FALLTHROUGH*/
|
|
|
}
|
|
|
|
|
|
case WDIOC_GETTIMEOUT:
|
|
|
- if (put_user(regval_to_timeout(wdt->regval), p))
|
|
|
- error = -EFAULT;
|
|
|
+ error = put_user(regval_to_timeout(wdt->regval), p);
|
|
|
break;
|
|
|
|
|
|
default:
|