summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/udl/udl_transfer.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2018-07-25 11:47:02 +0200
committerIngo Molnar <mingo@kernel.org>2018-07-25 11:47:02 +0200
commit93081caaaed6a40a4f6d9b7ba3f581a4bb1d4404 (patch)
treef574201ba58ddf9e6264f463e613066cfc8532ba /drivers/gpu/drm/udl/udl_transfer.c
parent788faab70d5a882693286b8d5022779559c79904 (diff)
parent7f635ff187ab6be0b350b3ec06791e376af238ab (diff)
Merge branch 'perf/urgent' into perf/core, to pick up fixes
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/udl/udl_transfer.c')
-rw-r--r--drivers/gpu/drm/udl/udl_transfer.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/gpu/drm/udl/udl_transfer.c b/drivers/gpu/drm/udl/udl_transfer.c
index 0c87b1ac6b68..b992644c17e6 100644
--- a/drivers/gpu/drm/udl/udl_transfer.c
+++ b/drivers/gpu/drm/udl/udl_transfer.c
@@ -153,11 +153,11 @@ static void udl_compress_hline16(
raw_pixels_count_byte = cmd++; /* we'll know this later */
raw_pixel_start = pixel;
- cmd_pixel_end = pixel + (min(MAX_CMD_PIXELS + 1,
- min((int)(pixel_end - pixel) / bpp,
- (int)(cmd_buffer_end - cmd) / 2))) * bpp;
+ cmd_pixel_end = pixel + min3(MAX_CMD_PIXELS + 1UL,
+ (unsigned long)(pixel_end - pixel) / bpp,
+ (unsigned long)(cmd_buffer_end - 1 - cmd) / 2) * bpp;
- prefetch_range((void *) pixel, (cmd_pixel_end - pixel) * bpp);
+ prefetch_range((void *) pixel, cmd_pixel_end - pixel);
pixel_val16 = get_pixel_val16(pixel, bpp);
while (pixel < cmd_pixel_end) {
@@ -193,6 +193,9 @@ static void udl_compress_hline16(
if (pixel > raw_pixel_start) {
/* finalize last RAW span */
*raw_pixels_count_byte = ((pixel-raw_pixel_start) / bpp) & 0xFF;
+ } else {
+ /* undo unused byte */
+ cmd--;
}
*cmd_pixels_count_byte = ((pixel - cmd_pixel_start) / bpp) & 0xFF;