Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751758AbdGZRR2 (ORCPT ); Wed, 26 Jul 2017 13:17:28 -0400 Received: from mail-io0-f171.google.com ([209.85.223.171]:36374 "EHLO mail-io0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751529AbdGZRRZ (ORCPT ); Wed, 26 Jul 2017 13:17:25 -0400 MIME-Version: 1.0 In-Reply-To: References: <20170726035036.GA76341@beast> From: Kees Cook Date: Wed, 26 Jul 2017 10:17:23 -0700 X-Google-Sender-Auth: WGRQssQBvIQ7LHmppeuLXSDQzFc Message-ID: Subject: Re: [PATCH] fortify: Use WARN instead of BUG for now To: Linus Torvalds Cc: Andrew Morton , Daniel Micay , Dan Williams , Mika Westerberg , Al Viro , David Howells , Heikki Krogerus , Bjorn Helgaas , Arnd Bergmann , Greg Kroah-Hartman , Mauro Carvalho Chehab , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1527 Lines: 48 On Wed, Jul 26, 2017 at 10:10 AM, Linus Torvalds wrote: > On Tue, Jul 25, 2017 at 8:50 PM, Kees Cook wrote: >> + >> +void fortify_read_overflow(const char *func) >> { >> - pr_emerg("detected buffer overflow in %s\n", name); >> - BUG(); >> + WARN(1, "detected read beyond size of object passed as 1st parameter in %s\n", func); >> } > > Side note: have you actually checked the code generation of this all? > > In particular, do you have any reason to use the out-of-line > functions? Our WARN() code isn't horrible, and isn't likely to be > noticeably worse than your own explicit out-of-lining. And you'd get > the "unlikely()" for free, so you'll possibly get smaller code that > runs better too. > > And it would even *look* better. This: > > if (p_size < size) > fortify_read_overflow(__func__); > > would become > > WARN(p_size < size, "kmemdup size overflow"); > > or something. I did, yeah. It's actually slightly smaller code size to out-of-line these: $ size vmlinux.fortify* text data bss dec hex filename 10903767 5605009 13930496 30439272 1d07768 vmlinux.fortify-off 10944795 5617801 13930496 30493092 1d149a4 vmlinux.fortify 10950117 5626725 13930496 30507338 1d1814a vmlinux.fortify-inline If the readability improvement is preferred over the growth in size, I can certainly respin it. -Kees -- Kees Cook Pixel Security