[patch 054/101] swsusp: Fix possible oops in userland interface

2007-03-07 Thread Greg KH
From: Stefan Seyfried <[EMAIL PROTECTED]>

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 <[EMAIL PROTECTED]>
Signed-off-by: Rafael J. Wysocki <[EMAIL PROTECTED]>
Acked-by: Pavel Machek <[EMAIL PROTECTED]>
Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>


---
 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 054/101] swsusp: Fix possible oops in userland interface

2007-03-07 Thread Greg KH
From: Stefan Seyfried [EMAIL PROTECTED]

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 [EMAIL PROTECTED]
Signed-off-by: Rafael J. Wysocki [EMAIL PROTECTED]
Acked-by: Pavel Machek [EMAIL PROTECTED]
Signed-off-by: Greg Kroah-Hartman [EMAIL PROTECTED]


---
 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 [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/