]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - kernel/kexec.c
mm: mempolicy: turn vma_set_policy() into vma_dup_policy()
[karo-tx-linux.git] / kernel / kexec.c
index b574920cbd4b3fe70286647c8da199c7df310d07..59f7b55ba7453d4b406d0c066e5f6be5cea7037c 100644 (file)
@@ -786,7 +786,7 @@ static int kimage_load_normal_segment(struct kimage *image,
                                         struct kexec_segment *segment)
 {
        unsigned long maddr;
-       unsigned long ubytes, mbytes;
+       size_t ubytes, mbytes;
        int result;
        unsigned char __user *buf;
 
@@ -819,13 +819,9 @@ static int kimage_load_normal_segment(struct kimage *image,
                /* Start with a clear page */
                clear_page(ptr);
                ptr += maddr & ~PAGE_MASK;
-               mchunk = PAGE_SIZE - (maddr & ~PAGE_MASK);
-               if (mchunk > mbytes)
-                       mchunk = mbytes;
-
-               uchunk = mchunk;
-               if (uchunk > ubytes)
-                       uchunk = ubytes;
+               mchunk = min_t(size_t, mbytes,
+                               PAGE_SIZE - (maddr & ~PAGE_MASK));
+               uchunk = min(ubytes, mchunk);
 
                result = copy_from_user(ptr, buf, uchunk);
                kunmap(page);
@@ -850,7 +846,7 @@ static int kimage_load_crash_segment(struct kimage *image,
         * We do things a page at a time for the sake of kmap.
         */
        unsigned long maddr;
-       unsigned long ubytes, mbytes;
+       size_t ubytes, mbytes;
        int result;
        unsigned char __user *buf;
 
@@ -871,13 +867,10 @@ static int kimage_load_crash_segment(struct kimage *image,
                }
                ptr = kmap(page);
                ptr += maddr & ~PAGE_MASK;
-               mchunk = PAGE_SIZE - (maddr & ~PAGE_MASK);
-               if (mchunk > mbytes)
-                       mchunk = mbytes;
-
-               uchunk = mchunk;
-               if (uchunk > ubytes) {
-                       uchunk = ubytes;
+               mchunk = min_t(size_t, mbytes,
+                               PAGE_SIZE - (maddr & ~PAGE_MASK));
+               uchunk = min(ubytes, mchunk);
+               if (mchunk > uchunk) {
                        /* Zero the trailing part of the page */
                        memset(ptr + uchunk, 0, mchunk - uchunk);
                }
@@ -1540,14 +1533,13 @@ void vmcoreinfo_append_str(const char *fmt, ...)
 {
        va_list args;
        char buf[0x50];
-       int r;
+       size_t r;
 
        va_start(args, fmt);
        r = vsnprintf(buf, sizeof(buf), fmt, args);
        va_end(args);
 
-       if (r + vmcoreinfo_size > vmcoreinfo_max_size)
-               r = vmcoreinfo_max_size - vmcoreinfo_size;
+       r = min(r, vmcoreinfo_max_size - vmcoreinfo_size);
 
        memcpy(&vmcoreinfo_data[vmcoreinfo_size], buf, r);