projects
/
openwrt.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[rdc] fix watchdog driver unregistering, patch by Bernhard Loos
[openwrt.git]
/
target
/
linux
/
rdc
/
files-2.6.30
/
drivers
/
watchdog
/
rdc321x_wdt.c
diff --git
a/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c
b/target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c
index
9e8b037
..
3ced6c9
100644
(file)
--- a/
target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c
+++ b/
target/linux/rdc/files-2.6.30/drivers/watchdog/rdc321x_wdt.c
@@
-28,6
+28,7
@@
#include <linux/watchdog.h>
#include <linux/uaccess.h>
#include <linux/pci.h>
#include <linux/watchdog.h>
#include <linux/uaccess.h>
#include <linux/pci.h>
+#include <linux/delay.h>
#include <asm/rdc321x_defs.h>
#include <asm/rdc321x_defs.h>
@@
-123,8
+124,12
@@
static int rdc321x_wdt_open(struct inode *inode, struct file *file)
static int rdc321x_wdt_release(struct inode *inode, struct file *file)
{
static int rdc321x_wdt_release(struct inode *inode, struct file *file)
{
- if (rdc321x_wdt_dev.close_expected)
- rdc321x_wdt_stop();
+ int res;
+ if (rdc321x_wdt_dev.close_expected) {
+ res = rdc321x_wdt_stop();
+ if (res)
+ return res;
+ }
rdc321x_wdt_dev.inuse = false;
rdc321x_wdt_dev.inuse = false;
@@
-181,7
+186,7
@@
static ssize_t rdc321x_wdt_write(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{
size_t i;
size_t count, loff_t *ppos)
{
size_t i;
-
+
if (!count)
return -EIO;
if (!count)
return -EIO;
@@
-248,6
+253,10
@@
static int __devexit rdc321x_wdt_remove(struct platform_device *pdev)
{
if (rdc321x_wdt_dev.inuse)
rdc321x_wdt_dev.inuse = 0;
{
if (rdc321x_wdt_dev.inuse)
rdc321x_wdt_dev.inuse = 0;
+
+ while (timer_pending(&rdc321x_wdt_dev.timer))
+ msleep(100);
+
misc_deregister(&rdc321x_wdt_misc);
return 0;
}
misc_deregister(&rdc321x_wdt_misc);
return 0;
}
This page took
0.027334 seconds
and
4
git commands to generate.