Received: by 2002:a05:6a10:f3d0:0:0:0:0 with SMTP id a16csp4568835pxv; Tue, 29 Jun 2021 10:01:06 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwRIfyfB1ADGhWQbzgY1obYrVYTVtGr2NmDXQMKohHyh7NMvnTadab/lZJGxWab2T8C8MqL X-Received: by 2002:a05:6402:1205:: with SMTP id c5mr29077087edw.68.1624986066183; Tue, 29 Jun 2021 10:01:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1624986066; cv=none; d=google.com; s=arc-20160816; b=wmBjB2yYM5keLOkGQglDg9JMjKzGFyqU8g2EKAuDhltqLR9ToXkRyCLdWWzBA8WDeo KaXxxN7UIyEDjMR7G/eK1IU6YuIiTAGdMAHo1gPV+Ixusx1mDHF2LATjpzcgOX5ClLLX C5r/WzuqdAisb0evqud8cZj4FTos0aycayz5e+m4J2HKLW0bgSkBlWpV5k1sPMZ+IHKu 2Et58uM0IPGggoHu6KuDwS/By0pXXEaJaQh4OQzdvcfUGUYShuuMcxGjlxPN/iqzlIb2 4jTbhGntQ6vrbSi8HZ+Kt0EOCm/K6nRGxQk6Q62nRYOqNfFO3c61mxKzsxRgi4/eRI7e dE9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=0F7hMZHCIK+7v4XQf0d2VY6BLy6L3ZoxZU11ibykN9g=; b=Ns0g4QmVy7ABt9ad5Fc7SLX2ehTT67U1XQwXnqGKH3EGtkIlQGF8Ll1O2hGaF3Nxxy 7rmqVwNpvanq3w8AjvYtRpmBHGt+8Cs3nmB9fOe+NRJ+nplaYJHO03rszRuEgVYcqdJg TsBFIVC+D8LTHzcyB141MwBpum1zwHUV6mSpnThWXR22T61lphyVI4KvXYTHeioQ6Wd3 UndDU4tXcQz2dqKHFwiQKAvfzu7hHCjoAO4cMnNSdQDhYhFchqReb1vydhrA+MwTEkLo IEWL0L9sFMd3FiLx/zCIBMw4czAAmbAPvcUQHfaNbShQo9S5LPH2Nx0c7Kfg5NvMR6C9 8Tiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=B7xyVqn1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id gz12si17339867ejc.734.2021.06.29.10.00.42; Tue, 29 Jun 2021 10:01:06 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=B7xyVqn1; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232487AbhF2QVE (ORCPT + 99 others); Tue, 29 Jun 2021 12:21:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42286 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232124AbhF2QUz (ORCPT ); Tue, 29 Jun 2021 12:20:55 -0400 Received: from mail-qk1-x749.google.com (mail-qk1-x749.google.com [IPv6:2607:f8b0:4864:20::749]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A8DB3C061766 for ; Tue, 29 Jun 2021 09:17:45 -0700 (PDT) Received: by mail-qk1-x749.google.com with SMTP id q207-20020a3743d80000b02903ab34f7ef76so21184757qka.5 for ; Tue, 29 Jun 2021 09:17:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=0F7hMZHCIK+7v4XQf0d2VY6BLy6L3ZoxZU11ibykN9g=; b=B7xyVqn1vrbzkQJ6kBNJL7fDADQ/1pWXqIy1hGlkPun62lYL9b3Y3oczyOZtu3/N3W O+gYGvyqL70jMCAOQhJ51MPhsqJduW0z0m4q9118ZzRPxUlZ+HmyzDjz9kkrqUkaoTxO jePjiVM6SizeP2G0SnOwLsTNKbNJGJSiX9uU2iqCaa6+q75SEJOBHcNiHJTzE7InP8d0 EiAISPOa6pv8LEhXJ6HnZmqbVVlO787ozJ1X2DVJp/8n7rfD1zmZvwNS+GsXj6bV81V3 4xua1fSjMGaN+Co8+70OXxk7WHtAX4+O+CgMEvQn8OwAOgjvkZFRy3Y/ThEwS+Dg/UFn wKwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=0F7hMZHCIK+7v4XQf0d2VY6BLy6L3ZoxZU11ibykN9g=; b=OYiXeJ6Nis0HNPzoSAMPn+AjN3daXFktQbqYG5Qy8XXjZr//qEWOYBMeHRyyqcrhFy lNlnq+pyIwK+UcQWQRKJsVHE936035SMU/SOwunks9QNLSq05GHFOhwoy43aF2UnaxXS WL1pmJB4vk4Xf3s4tX8EShE4+A1iog3uu4Hy6TD4lCPjW9Cp2cv3VnyhK8BSeSowGVBk HxRV0u2es17aIAUc35PmZ5N0TKQO3tRiTqAtujUqm+uKDE6IQu8ek1+GYgKzc5iw0pPp jLflEWElKqCqIF/Zn6FxkgQDjxzvqTTboaA7k9JOh+2MMr3DRTkz07hRffF6z6Oopu0V IysQ== X-Gm-Message-State: AOAM530CKP3v0wQS4hIkv0kq0IrttNi3eyed+YCojHvngVm+6QinYQVq Em+rWjT+eeCnKm2G0oJx2ResC3KApqs= X-Received: from glider.muc.corp.google.com ([2a00:79e0:15:13:b4f8:c933:870a:c31d]) (user=glider job=sendgmr) by 2002:a05:6214:9c6:: with SMTP id dp6mr32184504qvb.30.1624983464121; Tue, 29 Jun 2021 09:17:44 -0700 (PDT) Date: Tue, 29 Jun 2021 18:17:38 +0200 Message-Id: <20210629161738.936790-1-glider@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.32.0.93.g670b81a890-goog Subject: [PATCH v2] kfence: skip DMA allocations From: Alexander Potapenko To: akpm@linux-foundation.org Cc: dvyukov@google.com, elver@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, stable@vger.kernel.org, gregkh@linuxfoundation.org, Alexander Potapenko Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Allocation requests with __GFP_DMA/__GFP_DMA32 or SLAB_CACHE_DMA/SLAB_CACHE_DMA32 cannot be fulfilled by KFENCE, because they must reside in low memory, whereas KFENCE memory pool is located in high memory. Skip such allocations to avoid crashes where DMAable memory is expected. Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") Cc: Andrew Morton Cc: Dmitry Vyukov Cc: Marco Elver Cc: Greg Kroah-Hartman Cc: stable@vger.kernel.org # 5.12+ Signed-off-by: Alexander Potapenko --- v2: - added parentheses around the GFP clause, as requested by Marco --- mm/kfence/core.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index 4d21ac44d5d35..f7ce3d876bc9e 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -760,6 +760,14 @@ void *__kfence_alloc(struct kmem_cache *s, size_t size, gfp_t flags) if (size > PAGE_SIZE) return NULL; + /* + * Skip DMA allocations. These must reside in the low memory, which we + * cannot guarantee. + */ + if ((flags & (__GFP_DMA | __GFP_DMA32)) || + (s->flags & (SLAB_CACHE_DMA | SLAB_CACHE_DMA32))) + return NULL; + return kfence_guarded_alloc(s, size, flags); } -- 2.32.0.93.g670b81a890-goog