From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1763804AbdAKO5V (ORCPT ); Wed, 11 Jan 2017 09:57:21 -0500 Received: from mout.kundenserver.de ([212.227.126.134]:52506 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751718AbdAKO5T (ORCPT ); Wed, 11 Jan 2017 09:57:19 -0500 From: Arnd Bergmann To: Kees Cook , Greg Kroah-Hartman Cc: Arnd Bergmann , Michael Ellerman , linux-kernel@vger.kernel.org Subject: [PATCH] lkdtm: hide stack overflow warning for corrupt-stack test Date: Wed, 11 Jan 2017 15:56:44 +0100 Message-Id: <20170111145711.810229-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:LztveRmQRXc9uwTEdxlheb3OKMb4pfJpM8busVCESNgDWPdnsU4 /+XK27BnP9POwY5rw/4ObabdxlMB2Xts069xpQHnlMqNsYRNXgcGmPwpfbfiE/m7xZGw3Lv YEsZSEfeLqu105Se6ZDpcOr/MpnwZjzBnurN8mmUgUPfWsD63gF22fRLcooa4jdgkVMFZtz BtscU5af0vmQSLUSuGGDg== X-UI-Out-Filterresults: notjunk:1;V01:K0:Ek7NywWU3+k=:Rr/uUicbg0uDU9p0IUFdGD Ob98F/KD7daIakAQhiJcV7AqLTh3eQA0Ym6bJgmusefr2594VS88jYmrGliyOoqwIpN8QWcK3 1EiVoSoZxCTFISUJORd+Oi1FYy82Glou5f9go/zUWiRhJFuhqz/m9MgvhvlrElej+GDtEJ7nU o3OWnsg+Hvb+//ppFeNRBta7jqK6WH4H+b7cmgpb1/GHAi69fRjKWSXSaC+sHZGoIgDvx6hnh but45ofTZnIbvKRg6QTdDndWXMiIMiDX1VQ5g3RZTKmL+xRDLYyrD8StJh8x6GazdSpZD7Pxf gSakkeA6Qh7jX7vpfV+CjEHYo+QFpZKVL8ev/KR6mg8CD8A4seCwJLYb65tVnQmRjgUB8Gtu0 YqYbwQz7Ztaq0CAK9GRQznodvtbIuSPeCoq2n7GhjXzRy4HYIQ8ag0DAWZmWMmoj1RaaWcXUZ 6WfkzFo2zHQhb1LgKmWPX6lyv5ITn+OK8Ep/QePcrPQmvZYN2JPVHwuHhj5MU7jI70cA9ajE9 L9opNnQdD1IFdFtihi56zSup5B6y4q74enYqUpNDFKM84l/DMstYZMg3/4bRajNsFoYmy+ZRd UduuBPJ522rg74lDF5Ql0A9mPhJYvWOxE1ulnbQTiz0O98fTClHEzQ1IW0rWq29/aaxbY50+x JpKhiDQXOwfNLpzcix0MFlIBV7WJXOaneNxPhax8KcKu69fHk0s7HGgOhi+QeMHDqItI= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org After the latest change to make sure the compiler actually does a memset, it is now smart enough to flag the stack overflow at compile time, at least with gcc-7.0: drivers/misc/lkdtm_bugs.c: In function 'lkdtm_CORRUPT_STACK': drivers/misc/lkdtm_bugs.c:88:144: warning: 'memset' writing 64 bytes into a region of size 8 overflows the destination [-Wstringop-overflow=] To outsmart the compiler again, this moves the memset into a noinline function where (for now) it doesn't see that we intentionally write broken code here. Fixes: c55d240003ae ("lkdtm: Prevent the compiler from optimising lkdtm_CORRUPT_STACK()") Signed-off-by: Arnd Bergmann --- drivers/misc/lkdtm_bugs.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/misc/lkdtm_bugs.c b/drivers/misc/lkdtm_bugs.c index 91edd0b55e5c..bb3bb8ef5f44 100644 --- a/drivers/misc/lkdtm_bugs.c +++ b/drivers/misc/lkdtm_bugs.c @@ -80,12 +80,17 @@ void lkdtm_OVERFLOW(void) (void) recursive_loop(recur_count); } +static noinline void __lkdtm_CORRUPT_STACK(void *stack) +{ + memset(stack, 'a', 64); +} + noinline void lkdtm_CORRUPT_STACK(void) { /* Use default char array length that triggers stack protection. */ char data[8]; + __lkdtm_CORRUPT_STACK(&data); - memset((void *)data, 'a', 64); pr_info("Corrupted stack with '%16s'...\n", data); } -- 2.9.0