Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux...
[platform/kernel/linux-arm64.git] / kernel / kexec.c
index b574920..59f7b55 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);