]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - block/blk-merge.c
Merge tag 'for-linus' of git://git.armlinux.org.uk/~rmk/linux-arm
[linux.git] / block / blk-merge.c
index 347782a24a3563266bcba9725c48355ab82f2faf..1534ed736363fd807998525d3ddd828e566004f8 100644 (file)
@@ -164,8 +164,13 @@ static inline unsigned get_max_segment_size(const struct request_queue *q,
        unsigned long mask = queue_segment_boundary(q);
 
        offset = mask & (page_to_phys(start_page) + offset);
-       return min_t(unsigned long, mask - offset + 1,
-                    queue_max_segment_size(q));
+
+       /*
+        * overflow may be triggered in case of zero page physical address
+        * on 32bit arch, use queue's max segment size when that happens.
+        */
+       return min_not_zero(mask - offset + 1,
+                       (unsigned long)queue_max_segment_size(q));
 }
 
 /**