diff options
Diffstat (limited to 'drivers/watchdog')
| -rw-r--r-- | drivers/watchdog/booke_wdt.c | 7 | ||||
| -rw-r--r-- | drivers/watchdog/da9052_wdt.c | 1 | ||||
| -rw-r--r-- | drivers/watchdog/hpwdt.c | 3 | ||||
| -rw-r--r-- | drivers/watchdog/watchdog_core.c | 3 | 
4 files changed, 8 insertions, 6 deletions
diff --git a/drivers/watchdog/booke_wdt.c b/drivers/watchdog/booke_wdt.c index 3fe82d0e8ca..5b06d31ab6a 100644 --- a/drivers/watchdog/booke_wdt.c +++ b/drivers/watchdog/booke_wdt.c @@ -166,18 +166,17 @@ static long booke_wdt_ioctl(struct file *file,  	switch (cmd) {  	case WDIOC_GETSUPPORT: -		if (copy_to_user((void *)arg, &ident, sizeof(ident))) -			return -EFAULT; +		return copy_to_user(p, &ident, sizeof(ident)) ? -EFAULT : 0;  	case WDIOC_GETSTATUS:  		return put_user(0, p);  	case WDIOC_GETBOOTSTATUS:  		/* XXX: something is clearing TSR */  		tmp = mfspr(SPRN_TSR) & TSR_WRS(3);  		/* returns CARDRESET if last reset was caused by the WDT */ -		return (tmp ? WDIOF_CARDRESET : 0); +		return put_user((tmp ? WDIOF_CARDRESET : 0), p);  	case WDIOC_SETOPTIONS:  		if (get_user(tmp, p)) -			return -EINVAL; +			return -EFAULT;  		if (tmp == WDIOS_ENABLECARD) {  			booke_wdt_ping();  			break; diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c index 3f75129eb0a..f7abbaeebca 100644 --- a/drivers/watchdog/da9052_wdt.c +++ b/drivers/watchdog/da9052_wdt.c @@ -21,7 +21,6 @@  #include <linux/types.h>  #include <linux/kernel.h>  #include <linux/jiffies.h> -#include <linux/delay.h>  #include <linux/mfd/da9052/reg.h>  #include <linux/mfd/da9052/da9052.h> diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 1eff743ec49..ae60406ea8a 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c @@ -814,6 +814,9 @@ static int __devinit hpwdt_init_one(struct pci_dev *dev,  	hpwdt_timer_reg = pci_mem_addr + 0x70;  	hpwdt_timer_con = pci_mem_addr + 0x72; +	/* Make sure that timer is disabled until /dev/watchdog is opened */ +	hpwdt_stop(); +  	/* Make sure that we have a valid soft_margin */  	if (hpwdt_change_timer(soft_margin))  		hpwdt_change_timer(DEFAULT_MARGIN); diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 6aa46a90ff0..3796434991f 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -128,11 +128,12 @@ EXPORT_SYMBOL_GPL(watchdog_register_device);  void watchdog_unregister_device(struct watchdog_device *wdd)  {  	int ret; -	int devno = wdd->cdev.dev; +	int devno;  	if (wdd == NULL)  		return; +	devno = wdd->cdev.dev;  	ret = watchdog_dev_unregister(wdd);  	if (ret)  		pr_err("error unregistering /dev/watchdog (err=%d)\n", ret);  |