Received: by 10.192.165.148 with SMTP id m20csp49866imm; Thu, 19 Apr 2018 12:49:15 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/xmqSB8gMBmcWb5jnTUUFwwWsNqSQ277KdTfKUCJHbvAq0pHnuJkG9mx8jtX71BVOnUJF0 X-Received: by 2002:a17:902:5992:: with SMTP id p18-v6mr7516465pli.49.1524167355706; Thu, 19 Apr 2018 12:49:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524167355; cv=none; d=google.com; s=arc-20160816; b=uH9jjHmbcGB8OiBB3WpmOc+VLu6WyjA8s6KZK0S6eAsKYWc0B6HwNJim3OsB2IziHk hZGwFxjidtIYCp2lwuAE6Gk/ihVI9SLIZFluT79o1XZe2QLCykksELOGCfKqhwmQVrC8 jOi9DeLIoeco+DdyZCNrQBhuyC/m7DLwrMAv1y7rim6ovt4GiIJkl6xasqXuMgoXkG5g QymAEJyRT2v/8cgr1XA04fdJz4sNsOjI8U1RrW+lbzLfVFJ4pBbHvhnQjtAPxNDelIig 7uecv8AKcGYrUV55axu9XbOVf3y1dRi1l4Kd8/McAX/UiHkR2n743zQWvidfxHFMRr2R H+Hg== 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=GYrI41P3lv2NuXdB3etIb2vCfFZKUsSYXf3LpnZLvm4=; b=Ky6VLmcOsbxKffqnqaXVc1i4t3Dl4mB9h+RzIaRJqaFXl1gm/p4JLWpYVqEL1C4Pjm XjCGpMUvUnRI9qeO58z1KNU23vfIuGmBBS+disTkIKAVzp6csYftKAZ33B3fZqfYYXKA YRK/TFIzkvVi4hSw35F5fRLNimy3NC9tfwqVgWyGnK3fSDWCwBZfwuRH/ZoGxm6BBtCQ K5YwXsZsqNpSQHS5Xd3KFMFnnlBpYyVzqauoR5mpPWXZw+pG2NGWHfU2l2k4PMul2Iap vD+xmdFpzeIrLTiO2qNYQ1iU6e7SMXHEY1fUU++d+y3SQ8QGfWYov/JibNk1DGMRTrgE i2/w== 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 i74si507713pfd.105.2018.04.19.12.49.00; Thu, 19 Apr 2018 12:49:15 -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 S1753362AbeDSTry (ORCPT + 99 others); Thu, 19 Apr 2018 15:47:54 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:55396 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751386AbeDSTrw (ORCPT ); Thu, 19 Apr 2018 15:47:52 -0400 Received: from akpm3.svl.corp.google.com (unknown [104.133.9.71]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 0E9C3D62; Thu, 19 Apr 2018 19:47:52 +0000 (UTC) Date: Thu, 19 Apr 2018 12:47:51 -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: <20180419124751.8884e516e99825d83da3d87a@linux-foundation.org> In-Reply-To: References: <3e65977e-53cd-bf09-bc4b-0ce40e9091fe@gmail.com> <20180418.134651.2225112489265654270.davem@davemloft.net> 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 12:12:38 -0400 (EDT) Mikulas Patocka wrote: > The kvmalloc function tries to use kmalloc and falls back to vmalloc if > kmalloc fails. > > Unfortunatelly, some kernel code has bugs - it uses kvmalloc and then > uses DMA-API on the returned memory or frees it with kfree. Such bugs were > found in the virtio-net driver, dm-integrity or RHEL7 powerpc-specific > code. > > These bugs are hard to reproduce because vmalloc falls back to kmalloc > only if memory is fragmented. Yes, that's nasty. > 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.