[PATCH 4/5] swsusp: fix error paths in snapshot_open

From: Rafael J. Wysocki
Date: Tue Mar 20 2007 - 17:28:45 EST


From: Rafael J. Wysocki <rjw@xxxxxxx>

We forget to increase device_available if there's an error in
snapshot_open(), so the snapshot device cannot be open at all after
snapshot_open() has returned an error.

Signed-off-by: Rafael J. Wysocki <rjw@xxxxxxx>
Acked-by: Pavel Machek <pavel@xxxxxx>
---
kernel/power/user.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)

Index: linux-2.6.21-rc4-mm1/kernel/power/user.c
===================================================================
--- linux-2.6.21-rc4-mm1.orig/kernel/power/user.c 2007-03-20 21:19:31.000000000 +0100
+++ linux-2.6.21-rc4-mm1/kernel/power/user.c 2007-03-20 21:35:59.000000000 +0100
@@ -49,12 +49,14 @@ static int snapshot_open(struct inode *i
if (!atomic_add_unless(&device_available, -1, 0))
return -EBUSY;

- if ((filp->f_flags & O_ACCMODE) == O_RDWR)
+ if ((filp->f_flags & O_ACCMODE) == O_RDWR) {
+ atomic_inc(&device_available);
return -ENOSYS;
-
- if(create_basic_memory_bitmaps())
+ }
+ if(create_basic_memory_bitmaps()) {
+ atomic_inc(&device_available);
return -ENOMEM;
-
+ }
nonseekable_open(inode, filp);
data = &snapshot_state;
filp->private_data = data;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/