Commit 322af98c56c70b3ec6f637fb07d41a9591a6ff9a
Committed by
Wim Van Sebroeck
1 parent
fcf1dd7e68
Exists in
master
and in
4 other branches
watchdog: sbc_fitpc2_wdt: fixed "scheduling while atomic" bug.
spinlock need to be replaced by mutex because of sleep functions inside wdt_send_data. Signed-off-by: Denis Turischev <denis@compulab.co.il> Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
Showing 1 changed file with 5 additions and 5 deletions Side-by-side Diff
drivers/watchdog/sbc_fitpc2_wdt.c
... | ... | @@ -30,7 +30,7 @@ |
30 | 30 | static int nowayout = WATCHDOG_NOWAYOUT; |
31 | 31 | static unsigned int margin = 60; /* (secs) Default is 1 minute */ |
32 | 32 | static unsigned long wdt_status; |
33 | -static DEFINE_SPINLOCK(wdt_lock); | |
33 | +static DEFINE_MUTEX(wdt_lock); | |
34 | 34 | |
35 | 35 | #define WDT_IN_USE 0 |
36 | 36 | #define WDT_OK_TO_CLOSE 1 |
37 | 37 | |
38 | 38 | |
39 | 39 | |
... | ... | @@ -53,18 +53,18 @@ |
53 | 53 | |
54 | 54 | static void wdt_enable(void) |
55 | 55 | { |
56 | - spin_lock(&wdt_lock); | |
56 | + mutex_lock(&wdt_lock); | |
57 | 57 | wdt_send_data(IFACE_ON_COMMAND, 1); |
58 | 58 | wdt_send_data(REBOOT_COMMAND, margin); |
59 | - spin_unlock(&wdt_lock); | |
59 | + mutex_unlock(&wdt_lock); | |
60 | 60 | } |
61 | 61 | |
62 | 62 | static void wdt_disable(void) |
63 | 63 | { |
64 | - spin_lock(&wdt_lock); | |
64 | + mutex_lock(&wdt_lock); | |
65 | 65 | wdt_send_data(IFACE_ON_COMMAND, 0); |
66 | 66 | wdt_send_data(REBOOT_COMMAND, 0); |
67 | - spin_unlock(&wdt_lock); | |
67 | + mutex_unlock(&wdt_lock); | |
68 | 68 | } |
69 | 69 | |
70 | 70 | static int fitpc2_wdt_open(struct inode *inode, struct file *file) |