llvmpipe: Fix zero-division in llvmpipe_texture_layout()
authorTakashi Iwai <tiwai@suse.de>
Wed, 25 Jun 2014 00:03:07 +0000 (02:03 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Wed, 25 Jun 2014 00:15:49 +0000 (02:15 +0200)
Fix the crash of "gnome-control-center info" invocation on QEMU where
zero height is passed at init.

(sroland: simplify logic by eliminating the div altogether, using 64bit mul.)

Fixes: https://bugzilla.novell.com/show_bug.cgi?id=879462
Cc: "10.2" <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/llvmpipe/lp_texture.c

index f60118135d9c6179065c506f747cfc0dc2044b34..6df88d076fa619a4bad7496e958d223dede35a4f 100644 (file)
@@ -115,7 +115,7 @@ llvmpipe_texture_layout(struct llvmpipe_screen *screen,
             lpr->row_stride[level] = align(nblocksx * block_size, util_cpu_caps.cacheline);
 
          /* if row_stride * height > LP_MAX_TEXTURE_SIZE */
-         if (lpr->row_stride[level] > LP_MAX_TEXTURE_SIZE / nblocksy) {
+         if ((uint64_t)lpr->row_stride[level] * nblocksy > LP_MAX_TEXTURE_SIZE) {
             /* image too large */
             goto fail;
          }