Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / s390 / mm / extmem.c
index 648deed..9b11e3e 100644 (file)
@@ -143,7 +143,7 @@ dcss_diag (__u8 func, void *parameter,
        rx = (unsigned long) parameter;
        ry = (unsigned long) func;
        __asm__ __volatile__(
-#ifdef CONFIG_ARCH_S390X
+#ifdef CONFIG_64BIT
                "   sam31\n" // switch to 31 bit
                "   diag    %0,%1,0x64\n"
                "   sam64\n" // switch back to 64 bit
@@ -192,6 +192,7 @@ query_segment_type (struct dcss_segment *seg)
        diag_cc = dcss_diag (DCSS_SEGEXT, qin, &dummy, &vmrc);
 
        if (diag_cc > 1) {
+               PRINT_WARN ("segment_type: diag returned error %ld\n", vmrc);
                rc = dcss_diag_translate_rc (vmrc);
                goto out_free;
        }
@@ -234,8 +235,8 @@ query_segment_type (struct dcss_segment *seg)
        rc = 0;
 
  out_free:
-       if (qin) kfree(qin);
-       if (qout) kfree(qout);
+       kfree(qin);
+       kfree(qout);
        return rc;
 }
 
@@ -394,7 +395,7 @@ __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long
                                segtype_string[seg->vm_segtype]);
        goto out;
  out_free:
-       kfree (seg);
+       kfree(seg);
  out:
        return rc;
 }
@@ -505,7 +506,7 @@ segment_modify_shared (char *name, int do_nonshared)
        list_del(&seg->list);
        dcss_diag(DCSS_PURGESEG, seg->dcss_name,
                  &dummy, &dummy);
-       kfree (seg);
+       kfree(seg);
  out_unlock:
        spin_unlock(&dcss_lock);
        return rc;
@@ -553,7 +554,7 @@ segment_save(char *name)
        int endpfn = 0;
        char cmd1[160];
        char cmd2[80];
-       int i;
+       int i, response;
 
        if (!MACHINE_IS_VM)
                return;
@@ -576,8 +577,20 @@ segment_save(char *name)
                        segtype_string[seg->range[i].start & 0xff]);
        }
        sprintf(cmd2, "SAVESEG %s", name);
-       cpcmd(cmd1, NULL, 0);
-       cpcmd(cmd2, NULL, 0);
+       response = 0;
+       cpcmd(cmd1, NULL, 0, &response);
+       if (response) {
+               PRINT_ERR("segment_save: DEFSEG failed with response code %i\n",
+                         response);
+               goto out;
+       }
+       cpcmd(cmd2, NULL, 0, &response);
+       if (response) {
+               PRINT_ERR("segment_save: SAVESEG failed with response code %i\n",
+                         response);
+               goto out;
+       }
+out:
        spin_unlock(&dcss_lock);
 }