Received: by 10.192.165.148 with SMTP id m20csp72975imm; Thu, 19 Apr 2018 16:24:18 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+hcdr0D419PGoeNwL3sy48F6RZfjuCWWFhjJHVMW29+y3A4oPq6tknLT/8tE7144etA3rY X-Received: by 2002:a17:902:7844:: with SMTP id e4-v6mr7781510pln.296.1524180258361; Thu, 19 Apr 2018 16:24:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524180258; cv=none; d=google.com; s=arc-20160816; b=GZRaadXfANrKaM+yZxJx1SBUkUTOaIaUfI3kXE6w4jZKHBoVD8ChEeWzxnKOrHresz 6VC9kC/Qi8aM62QpX2ojYwIwVx8nmYC/OaOQmlErNgU4783PMBC70nI26zc/C0LjbDvf BKh0205C8pOorqxfNnkK2IgC7InIvqamcyxWOWDBpzzvIYeAZodAoB7uiO4Jfc3LLpEp WRpUckUqDzduzQ7ppgjMoK9+bBOXs6KFZm6pz7u1aaG3Rb2EEjPo7avMTMFOsSpRpuuv iZNbL+18Dd+2KzAgDiMLKMUi/AssXFKQj6ZcoMWzK78ksuy4Ows5XYHCUl+ST0vm2qhR AUTA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:subject:cc:to:from:date :arc-authentication-results; bh=hsps2hZq3WGd5IC/fW/Ua5TZqSXQgfZcl2/CUSUsn6E=; b=rdMLYNlxugroPTtvGmdqUBoC69f2LHY/IhDWwKhPYsFkjozEv4gjtFNM7uCGHeYOSw XyTH1qvJwVFQ5fqmoK8C+UDpKclWDRchbTr/1JpMfBFkxASCVaj0zVcx+HrFRQiXrwBc OIxW60sRgB7hdruXRrfk2s/kSlM7qkIf7UyBECgPzDmYbs3mmL09nDFxKzNRIyqe0Zgw AVMUJClr/OOSnbZr3m0EBO3uG8RRUmVLessn+G5ogl9lOt/QFOaBILMKkZX50dRVEeZk ZXivd9J6Z1I8s+nyQiawemxWLSEIKnpMD0nzTeVzJmXcClF5aBQIBFdYQVU9U9mxBhWS 04CQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q4-v6si4274824pll.261.2018.04.19.16.24.02; Thu, 19 Apr 2018 16:24:18 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753857AbeDSXWy (ORCPT + 99 others); Thu, 19 Apr 2018 19:22:54 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:43550 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753601AbeDSXWx (ORCPT ); Thu, 19 Apr 2018 19:22:53 -0400 Received: from akpm3.svl.corp.google.com (unknown [104.133.9.71]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 46EFAE90; Thu, 19 Apr 2018 23:22:52 +0000 (UTC) Date: Thu, 19 Apr 2018 16:22:50 -0700 From: Andrew Morton To: Mikulas Patocka Cc: David Miller , linux-mm@kvack.org, eric.dumazet@gmail.com, edumazet@google.com, bhutchings@solarflare.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, mst@redhat.com, jasowang@redhat.com, virtualization@lists.linux-foundation.org, dm-devel@redhat.com, Vlastimil Babka Subject: Re: [PATCH] kvmalloc: always use vmalloc if CONFIG_DEBUG_VM Message-Id: <20180419162250.00bf82e2c40b4960a7e23cdc@linux-foundation.org> In-Reply-To: References: <3e65977e-53cd-bf09-bc4b-0ce40e9091fe@gmail.com> <20180418.134651.2225112489265654270.davem@davemloft.net> <20180419124751.8884e516e99825d83da3d87a@linux-foundation.org> X-Mailer: Sylpheed 3.6.0 (GTK+ 2.24.31; x86_64-pc-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, 19 Apr 2018 17:19:20 -0400 (EDT) Mikulas Patocka wrote: > > > In order to detect these bugs reliably I submit this patch that changes > > > kvmalloc to always use vmalloc if CONFIG_DEBUG_VM is turned on. > > > > > > ... > > > > > > --- linux-2.6.orig/mm/util.c 2018-04-18 15:46:23.000000000 +0200 > > > +++ linux-2.6/mm/util.c 2018-04-18 16:00:43.000000000 +0200 > > > @@ -395,6 +395,7 @@ EXPORT_SYMBOL(vm_mmap); > > > */ > > > void *kvmalloc_node(size_t size, gfp_t flags, int node) > > > { > > > +#ifndef CONFIG_DEBUG_VM > > > gfp_t kmalloc_flags = flags; > > > void *ret; > > > > > > @@ -426,6 +427,7 @@ void *kvmalloc_node(size_t size, gfp_t f > > > */ > > > if (ret || size <= PAGE_SIZE) > > > return ret; > > > +#endif > > > > > > return __vmalloc_node_flags_caller(size, node, flags, > > > __builtin_return_address(0)); > > > > Well, it doesn't have to be done at compile-time, does it? We could > > add a knob (in debugfs, presumably) which enables this at runtime. > > That's far more user-friendly. > > But who will turn it on in debugfs? But who will turn it on in Kconfig? Just a handful of developers. We could add SONFIG_DEBUG_SG to the list in Documentation/process/submit-checklist.rst, but nobody reads that. Also, a whole bunch of defconfigs set CONFIG_DEBUG_SG=y and some googling indicates that they aren't the only ones... > It should be default for debugging > kernels, so that users using them would report the error. Well. This isn't the first time we've wanted to enable expensive (or noisy) debugging things in debug kernels, by any means. So how could we define a debug kernel in which it's OK to enable such things? - Could be "it's an -rc kernel". But then we'd be enabling a bunch of untested code when Linus cuts a release. - Could be "it's an -rc kernel with SUBLEVEL <= 5". But then we risk unexpected things happening when Linux cuts -rc6, which still isn't good. - How about "it's an -rc kernel with odd-numbered SUBLEVEL and SUBLEVEL <= 5". That way everybody who runs -rc1, -rc3 and -rc5 will have kvmalloc debugging enabled. That's potentially nasty because vmalloc is much slower than kmalloc. But kvmalloc() is only used for large and probably infrequent allocations, so it's probably OK. I wonder how we get at SUBLEVEL from within .c.