nvidia/noveau: Fix color mask
Subsystems (5)
PATCH 1/1 nvidia/noveau: Fix color mask
The expression (~0 >> x) will always yield all-ones, because the right shift is an arithmetic right shift that will always shift ones in. Accordingly ~(~0 >> x) will always be zero.
Hence 'mask' will always be zero in this case.
Fix this by forcing a logical right shift instead of an arithmetic right shift by using an unsigned int constant.
Signed-off-by Michael Buesch <[email protected]>
---
This patch is untested, because I do not have the hardware.
Resend: Patch was originally sent on Wed, 17 Jun 2015.
drivers/gpu/drm/nouveau/nv50_fbcon.c +1 -1
@@ -96,7 +96,7 @@ nv50_fbcon_imageblit(struct fb_info *infstruct nouveau_drm *drm =nouveau_drm (nfbdev->dev);struct nouveau_channel *chan = drm->channel;uint32_t width, dwords, *data = (uint32_t *)image->data; -uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel)); +uint32_t mask = ~(~0U >> (32 - info->var.bits_per_pixel));uint32_t *palette = info->pseudo_palette;int ret;
drivers/gpu/drm/nouveau/nvc0_fbcon.c +1 -1
@@ -96,7 +96,7 @@ nvc0_fbcon_imageblit(struct fb_info *infstruct nouveau_drm *drm =nouveau_drm (nfbdev->dev);struct nouveau_channel *chan = drm->channel;uint32_t width, dwords, *data = (uint32_t *)image->data; -uint32_t mask = ~(~0 >> (32 - info->var.bits_per_pixel)); +uint32_t mask = ~(~0U >> (32 - info->var.bits_per_pixel));uint32_t *palette = info->pseudo_palette;int ret;
drivers/video/fbdev/nvidia/nv_accel.c +1 -1
@@ -351,7 +351,7 @@ static void nvidiafb_mono_color_expand(s const struct fb_image *image) {struct nvidia_par *par = info->par; -u32 fg, bg, mask = ~(~0 >> (32 - info->var.bits_per_pixel)); +u32 fg, bg, mask = ~(~0U >> (32 - info->var.bits_per_pixel));u32 dsize, width, *data = (u32 *) image->data, tmp;int j, k =0 ;