[S390] appldata/extmem/kvm: add missing GFP_KERNEL flag
[safe/jmp/linux-2.6] / arch / s390 / mm / extmem.c
index 5c84571..3cc95dd 100644 (file)
@@ -105,7 +105,7 @@ static int
 dcss_set_subcodes(void)
 {
 #ifdef CONFIG_64BIT
-       char *name = kmalloc(8 * sizeof(char), GFP_DMA);
+       char *name = kmalloc(8 * sizeof(char), GFP_KERNEL | GFP_DMA);
        unsigned long rx, ry;
        int rc;
 
@@ -252,12 +252,13 @@ dcss_diag_translate_rc (int vm_rc) {
 static int
 query_segment_type (struct dcss_segment *seg)
 {
-       struct qin64  *qin = kmalloc (sizeof(struct qin64), GFP_DMA);
-       struct qout64 *qout = kmalloc (sizeof(struct qout64), GFP_DMA);
-
-       int diag_cc, rc, i;
        unsigned long dummy, vmrc;
+       int diag_cc, rc, i;
+       struct qout64 *qout;
+       struct qin64 *qin;
 
+       qin = kmalloc(sizeof(*qin), GFP_KERNEL | GFP_DMA);
+       qout = kmalloc(sizeof(*qout), GFP_KERNEL | GFP_DMA);
        if ((qin == NULL) || (qout == NULL)) {
                rc = -ENOMEM;
                goto out_free;
@@ -286,7 +287,7 @@ query_segment_type (struct dcss_segment *seg)
           copy data for the new format. */
        if (segext_scode == DCSS_SEGEXT) {
                struct qout64_old *qout_old;
-               qout_old = kzalloc(sizeof(struct qout64_old), GFP_DMA);
+               qout_old = kzalloc(sizeof(*qout_old), GFP_KERNEL | GFP_DMA);
                if (qout_old == NULL) {
                        rc = -ENOMEM;
                        goto out_free;
@@ -309,7 +310,7 @@ query_segment_type (struct dcss_segment *seg)
        }
 #endif
        if (qout->segcnt > 6) {
-               rc = -ENOTSUPP;
+               rc = -EOPNOTSUPP;
                goto out_free;
        }
 
@@ -324,11 +325,11 @@ query_segment_type (struct dcss_segment *seg)
                for (i=0; i<qout->segcnt; i++) {
                        if (((qout->range[i].start & 0xff) != SEG_TYPE_EW) &&
                            ((qout->range[i].start & 0xff) != SEG_TYPE_EN)) {
-                               rc = -ENOTSUPP;
+                               rc = -EOPNOTSUPP;
                                goto out_free;
                        }
                        if (start != qout->range[i].start >> PAGE_SHIFT) {
-                               rc = -ENOTSUPP;
+                               rc = -EOPNOTSUPP;
                                goto out_free;
                        }
                        start = (qout->range[i].end >> PAGE_SHIFT) + 1;
@@ -357,7 +358,7 @@ query_segment_type (struct dcss_segment *seg)
  * -ENOSYS  : we are not running on VM
  * -EIO     : could not perform query diagnose
  * -ENOENT  : no such segment
- * -ENOTSUPP: multi-part segment cannot be used with linux
+ * -EOPNOTSUPP: multi-part segment cannot be used with linux
  * -ENOMEM  : out of memory
  * 0 .. 6   : type of segment as defined in include/asm-s390/extmem.h
  */
@@ -407,11 +408,11 @@ segment_overlaps_others (struct dcss_segment *seg)
 static int
 __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long *end)
 {
-       struct dcss_segment *seg = kmalloc(sizeof(struct dcss_segment),
-                       GFP_DMA);
-       int rc, diag_cc;
        unsigned long start_addr, end_addr, dummy;
+       struct dcss_segment *seg;
+       int rc, diag_cc;
 
+       seg = kmalloc(sizeof(*seg), GFP_KERNEL | GFP_DMA);
        if (seg == NULL) {
                rc = -ENOMEM;
                goto out;
@@ -515,7 +516,7 @@ __segment_load (char *name, int do_nonshared, unsigned long *addr, unsigned long
  * -ENOSYS  : we are not running on VM
  * -EIO     : could not perform query or load diagnose
  * -ENOENT  : no such segment
- * -ENOTSUPP: multi-part segment cannot be used with linux
+ * -EOPNOTSUPP: multi-part segment cannot be used with linux
  * -ENOSPC  : segment cannot be used (overlaps with storage)
  * -EBUSY   : segment can temporarily not be used (overlaps with dcss)
  * -ERANGE  : segment cannot be used (exceeds kernel mapping range)
@@ -742,7 +743,7 @@ void segment_warning(int rc, char *seg_name)
                pr_err("Loading or querying DCSS %s resulted in a "
                       "hardware error\n", seg_name);
                break;
-       case -ENOTSUPP:
+       case -EOPNOTSUPP:
                pr_err("DCSS %s has multiple page ranges and cannot be "
                       "loaded or queried\n", seg_name);
                break;