lkml.org 
[lkml]   [2007]   [Mar]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateWed, 07 Mar 2007 09:11:29 -0800
FromGreg KH <>
Subject[patch 054/101] swsusp: Fix possible oops in userland interface
From: Stefan Seyfried <seife@suse.de>

Fix the Oops occuring when SNAPSHOT_PMOPS or SNAPSHOT_S2RAM ioctl is called on
a system without pm_ops defined (eg. a non-ACPI kernel on x86 PC).

Signed-off-by: Stefan Seyfried <seife@suse.de>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>


---
kernel/power/user.c | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
--- linux-2.6.20.1.orig/kernel/power/user.c
+++ linux-2.6.20.1/kernel/power/user.c
@@ -292,7 +292,7 @@ static int snapshot_ioctl(struct inode *
break;
}

- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare) {
error = pm_ops->prepare(PM_SUSPEND_MEM);
if (error)
goto OutS3;
@@ -311,7 +311,7 @@ static int snapshot_ioctl(struct inode *
device_resume();
}
resume_console();
- if (pm_ops->finish)
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_MEM);

OutS3:
@@ -322,20 +322,25 @@ static int snapshot_ioctl(struct inode *
switch (arg) {

case PMOPS_PREPARE:
- if (pm_ops->prepare) {
+ if (pm_ops && pm_ops->prepare)
error = pm_ops->prepare(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;

case PMOPS_ENTER:
kernel_shutdown_prepare(SYSTEM_SUSPEND_DISK);
- error = pm_ops->enter(PM_SUSPEND_DISK);
+ if (pm_ops && pm_ops->enter)
+ error = pm_ops->enter(PM_SUSPEND_DISK);
+ else
+ error = -ENOSYS;
break;

case PMOPS_FINISH:
- if (pm_ops && pm_ops->finish) {
+ if (pm_ops && pm_ops->finish)
pm_ops->finish(PM_SUSPEND_DISK);
- }
+ else
+ error = -ENOSYS;
break;

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

\
 
 \ /
  Last update: 2007-03-07 18:41    [from the cache]
©2003-2010