From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Date: Mon, 28 Jan 2019 15:42:43 +0000 Subject: [PATCH AUTOSEL 4.20 246/304] fbdev: fbmem: behave better with small rotated displays and many CPUs Message-Id: <20190128154341.47195-246-sashal@kernel.org> List-Id: References: <20190128154341.47195-1-sashal@kernel.org> In-Reply-To: <20190128154341.47195-1-sashal@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , linux-fbdev@vger.kernel.org, Geert Uytterhoeven , Bartlomiej Zolnierkiewicz , Geoff Levand , dri-devel@lists.freedesktop.org, James Simmons , Fabian Frederick , Tomi Valkeinen , Peter Rosin From: Peter Rosin [ Upstream commit f75df8d4b4fabfad7e3cba2debfad12741c6fde7 ] Blitting an image with "negative" offsets is not working since there is no clipping. It hopefully just crashes. For the bootup logo, there is protection so that blitting does not happen as the image is drawn further and further to the right (ROTATE_UR) or further and further down (ROTATE_CW). There is however no protection when drawing in the opposite directions (ROTATE_UD and ROTATE_CCW). Add back this protection. The regression is 20-odd years old but the mindless warning-killing mentality displayed in commit 34bdb666f4b2 ("fbdev: fbmem: remove positive test on unsigned values") is also to blame, methinks. Fixes: 448d479747b8 ("fbdev: fb_do_show_logo() updates") Signed-off-by: Peter Rosin Cc: Tomi Valkeinen Cc: Fabian Frederick Cc: Geert Uytterhoeven cc: Geoff Levand Cc: James Simmons Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Sasha Levin --- drivers/video/fbdev/core/fbmem.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 861bf8081619..7dd6924feaa8 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -436,7 +436,9 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, image->dx += image->width + 8; } } else if (rotate = FB_ROTATE_UD) { - for (x = 0; x < num; x++) { + u32 dx = image->dx; + + for (x = 0; x < num && image->dx <= dx; x++) { info->fbops->fb_imageblit(info, image); image->dx -= image->width + 8; } @@ -448,7 +450,9 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, image->dy += image->height + 8; } } else if (rotate = FB_ROTATE_CCW) { - for (x = 0; x < num; x++) { + u32 dy = image->dy; + + for (x = 0; x < num && image->dy <= dy; x++) { info->fbops->fb_imageblit(info, image); image->dy -= image->height + 8; } -- 2.19.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.20 246/304] fbdev: fbmem: behave better with small rotated displays and many CPUs Date: Mon, 28 Jan 2019 10:42:43 -0500 Message-ID: <20190128154341.47195-246-sashal@kernel.org> References: <20190128154341.47195-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id EB7D16E4F6 for ; Mon, 28 Jan 2019 15:55:59 +0000 (UTC) In-Reply-To: <20190128154341.47195-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , linux-fbdev@vger.kernel.org, Geert Uytterhoeven , Bartlomiej Zolnierkiewicz , Geoff Levand , dri-devel@lists.freedesktop.org, James Simmons , Fabian Frederick , Tomi Valkeinen , Peter Rosin List-Id: dri-devel@lists.freedesktop.org RnJvbTogUGV0ZXIgUm9zaW4gPHBlZGFAYXhlbnRpYS5zZT4KClsgVXBzdHJlYW0gY29tbWl0IGY3 NWRmOGQ0YjRmYWJmYWQ3ZTNjYmEyZGViZmFkMTI3NDFjNmZkZTcgXQoKQmxpdHRpbmcgYW4gaW1h Z2Ugd2l0aCAibmVnYXRpdmUiIG9mZnNldHMgaXMgbm90IHdvcmtpbmcgc2luY2UgdGhlcmUKaXMg bm8gY2xpcHBpbmcuIEl0IGhvcGVmdWxseSBqdXN0IGNyYXNoZXMuIEZvciB0aGUgYm9vdHVwIGxv Z28sIHRoZXJlCmlzIHByb3RlY3Rpb24gc28gdGhhdCBibGl0dGluZyBkb2VzIG5vdCBoYXBwZW4g YXMgdGhlIGltYWdlIGlzIGRyYXduCmZ1cnRoZXIgYW5kIGZ1cnRoZXIgdG8gdGhlIHJpZ2h0IChS T1RBVEVfVVIpIG9yIGZ1cnRoZXIgYW5kIGZ1cnRoZXIKZG93biAoUk9UQVRFX0NXKS4gVGhlcmUg aXMgaG93ZXZlciBubyBwcm90ZWN0aW9uIHdoZW4gZHJhd2luZyBpbiB0aGUKb3Bwb3NpdGUgZGly ZWN0aW9ucyAoUk9UQVRFX1VEIGFuZCBST1RBVEVfQ0NXKS4KCkFkZCBiYWNrIHRoaXMgcHJvdGVj dGlvbi4KClRoZSByZWdyZXNzaW9uIGlzIDIwLW9kZCB5ZWFycyBvbGQgYnV0IHRoZSBtaW5kbGVz cyB3YXJuaW5nLWtpbGxpbmcKbWVudGFsaXR5IGRpc3BsYXllZCBpbiBjb21taXQgMzRiZGI2NjZm NGIyICgiZmJkZXY6IGZibWVtOiByZW1vdmUKcG9zaXRpdmUgdGVzdCBvbiB1bnNpZ25lZCB2YWx1 ZXMiKSBpcyBhbHNvIHRvIGJsYW1lLCBtZXRoaW5rcy4KCkZpeGVzOiA0NDhkNDc5NzQ3YjggKCJm YmRldjogZmJfZG9fc2hvd19sb2dvKCkgdXBkYXRlcyIpClNpZ25lZC1vZmYtYnk6IFBldGVyIFJv c2luIDxwZWRhQGF4ZW50aWEuc2U+CkNjOiBUb21pIFZhbGtlaW5lbiA8dG9taS52YWxrZWluZW5A dGkuY29tPgpDYzogRmFiaWFuIEZyZWRlcmljayA8ZmZyZWRlcmlja0B1c2Vycy5zb3VyY2Vmb3Jn ZS5uZXQ+CkNjOiBHZWVydCBVeXR0ZXJob2V2ZW4gPGdlZXJ0K3JlbmVzYXNAZ2xpZGVyLmJlPgpj YzogR2VvZmYgTGV2YW5kIDxnZW9mZkBpbmZyYWRlYWQub3JnPgpDYzogSmFtZXMgU2ltbW9ucyA8 anNpbW1vbnNAdXNlcnMuc2YubmV0PgpTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFpvbG5pZXJr aWV3aWN6IDxiLnpvbG5pZXJraWVAc2Ftc3VuZy5jb20+ClNpZ25lZC1vZmYtYnk6IFNhc2hhIExl dmluIDxzYXNoYWxAa2VybmVsLm9yZz4KLS0tCiBkcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJt ZW0uYyB8IDggKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMg Yi9kcml2ZXJzL3ZpZGVvL2ZiZGV2L2NvcmUvZmJtZW0uYwppbmRleCA4NjFiZjgwODE2MTkuLjdk ZDY5MjRmZWFhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMK KysrIGIvZHJpdmVycy92aWRlby9mYmRldi9jb3JlL2ZibWVtLmMKQEAgLTQzNiw3ICs0MzYsOSBA QCBzdGF0aWMgdm9pZCBmYl9kb19zaG93X2xvZ28oc3RydWN0IGZiX2luZm8gKmluZm8sIHN0cnVj dCBmYl9pbWFnZSAqaW1hZ2UsCiAJCQlpbWFnZS0+ZHggKz0gaW1hZ2UtPndpZHRoICsgODsKIAkJ fQogCX0gZWxzZSBpZiAocm90YXRlID09IEZCX1JPVEFURV9VRCkgewotCQlmb3IgKHggPSAwOyB4 IDwgbnVtOyB4KyspIHsKKwkJdTMyIGR4ID0gaW1hZ2UtPmR4OworCisJCWZvciAoeCA9IDA7IHgg PCBudW0gJiYgaW1hZ2UtPmR4IDw9IGR4OyB4KyspIHsKIAkJCWluZm8tPmZib3BzLT5mYl9pbWFn ZWJsaXQoaW5mbywgaW1hZ2UpOwogCQkJaW1hZ2UtPmR4IC09IGltYWdlLT53aWR0aCArIDg7CiAJ CX0KQEAgLTQ0OCw3ICs0NTAsOSBAQCBzdGF0aWMgdm9pZCBmYl9kb19zaG93X2xvZ28oc3RydWN0 IGZiX2luZm8gKmluZm8sIHN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UsCiAJCQlpbWFnZS0+ZHkgKz0g aW1hZ2UtPmhlaWdodCArIDg7CiAJCX0KIAl9IGVsc2UgaWYgKHJvdGF0ZSA9PSBGQl9ST1RBVEVf Q0NXKSB7Ci0JCWZvciAoeCA9IDA7IHggPCBudW07IHgrKykgeworCQl1MzIgZHkgPSBpbWFnZS0+ ZHk7CisKKwkJZm9yICh4ID0gMDsgeCA8IG51bSAmJiBpbWFnZS0+ZHkgPD0gZHk7IHgrKykgewog CQkJaW5mby0+ZmJvcHMtPmZiX2ltYWdlYmxpdChpbmZvLCBpbWFnZSk7CiAJCQlpbWFnZS0+ZHkg LT0gaW1hZ2UtPmhlaWdodCArIDg7CiAJCX0KLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D4CC6C282C8 for ; Mon, 28 Jan 2019 17:34:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id A38092147A for ; Mon, 28 Jan 2019 17:34:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548696867; bh=tb60vAcAUtTVIgtv0fb2euBow94DTY6llkIYfmJbMow=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=I/1HLZqhIqhnTTDoMCX14QwQeWtOBX6xxlQHbl/DCTIBqo9EFXnLelVR7sMIBdcRO vzZbffZXZMytBDAnqtiyq7iWCgC1idaMa9Izli5h1RFviqNliCdpHnEIcDHfxqJ10M 4LZ3AGioKLRQu2q+F99mjmc52LUp2HIjYrsRFQ1k= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730214AbfA1ReZ (ORCPT ); Mon, 28 Jan 2019 12:34:25 -0500 Received: from mail.kernel.org ([198.145.29.99]:41794 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729591AbfA1P4A (ORCPT ); Mon, 28 Jan 2019 10:56:00 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id CF0BA21741; Mon, 28 Jan 2019 15:55:56 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1548690959; bh=tb60vAcAUtTVIgtv0fb2euBow94DTY6llkIYfmJbMow=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YiHKmfVz4aJ/cOxwN0N9x0Q+0a+bE2SwQ/UMSdUyXZlnvVZAxPmjAh2PT1ql8XLbf kX4HXfH6F9RKL8bfp0OYniRQ011OgYI/UwDvJmLlk9knkvge+iaRfr3g98eJKZAVl+ ThJkjr0mh3YumtCtbW2P+eZ5SC2NMvr/jXCAb6yE= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Peter Rosin , Tomi Valkeinen , Fabian Frederick , Geert Uytterhoeven , Geoff Levand , James Simmons , Bartlomiej Zolnierkiewicz , Sasha Levin , dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org Subject: [PATCH AUTOSEL 4.20 246/304] fbdev: fbmem: behave better with small rotated displays and many CPUs Date: Mon, 28 Jan 2019 10:42:43 -0500 Message-Id: <20190128154341.47195-246-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190128154341.47195-1-sashal@kernel.org> References: <20190128154341.47195-1-sashal@kernel.org> MIME-Version: 1.0 X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Peter Rosin [ Upstream commit f75df8d4b4fabfad7e3cba2debfad12741c6fde7 ] Blitting an image with "negative" offsets is not working since there is no clipping. It hopefully just crashes. For the bootup logo, there is protection so that blitting does not happen as the image is drawn further and further to the right (ROTATE_UR) or further and further down (ROTATE_CW). There is however no protection when drawing in the opposite directions (ROTATE_UD and ROTATE_CCW). Add back this protection. The regression is 20-odd years old but the mindless warning-killing mentality displayed in commit 34bdb666f4b2 ("fbdev: fbmem: remove positive test on unsigned values") is also to blame, methinks. Fixes: 448d479747b8 ("fbdev: fb_do_show_logo() updates") Signed-off-by: Peter Rosin Cc: Tomi Valkeinen Cc: Fabian Frederick Cc: Geert Uytterhoeven cc: Geoff Levand Cc: James Simmons Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Sasha Levin --- drivers/video/fbdev/core/fbmem.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c index 861bf8081619..7dd6924feaa8 100644 --- a/drivers/video/fbdev/core/fbmem.c +++ b/drivers/video/fbdev/core/fbmem.c @@ -436,7 +436,9 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, image->dx += image->width + 8; } } else if (rotate == FB_ROTATE_UD) { - for (x = 0; x < num; x++) { + u32 dx = image->dx; + + for (x = 0; x < num && image->dx <= dx; x++) { info->fbops->fb_imageblit(info, image); image->dx -= image->width + 8; } @@ -448,7 +450,9 @@ static void fb_do_show_logo(struct fb_info *info, struct fb_image *image, image->dy += image->height + 8; } } else if (rotate == FB_ROTATE_CCW) { - for (x = 0; x < num; x++) { + u32 dy = image->dy; + + for (x = 0; x < num && image->dy <= dy; x++) { info->fbops->fb_imageblit(info, image); image->dy -= image->height + 8; } -- 2.19.1