From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 03449416842 for ; Wed, 22 Jul 2026 23:02:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784761375; cv=none; b=DrMXCNpIsTPdCaau5qAgTExFHoljxT1C6yY0QE8Og0yIe1fCh1MQJp930eKkFEHfqc2QJMLjzvtHT2iwnZCOAXWFYD3Hvg7QpCqI49oIALE5CdZ0I4m7ViXhg8ZBWDzYKTtFCOtqNScWJxOTgcZ/OSkrTmrsJ62yqLZh4oj9SCA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784761375; c=relaxed/simple; bh=iUruQoQU3vAChl3lTG+la/tAkwoeU8I30TUtgVpE6+4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=ZB+jAv3+Yy1okpfQBZot3XikjdD3DjLD9zjabUoQdGiWFUe4R1hzhjA9vbE1ktMoiIlnI4DmCwd4GOIN9UckAF6rjIqUHpoW5i69jFsqoBwRV8WYUmibqtePQ+IJciefKVSzSnNzf8BuccguMBrya1onT3QEyLXqCqMLEQaSGUQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=AwsE9lSb; arc=none smtp.client-ip=209.85.128.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="AwsE9lSb" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-4956242332dso233345e9.2 for ; Wed, 22 Jul 2026 16:02:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784761372; x=1785366172; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=Kv31Od05MjV5ejp4GXE3h+wOouFnNcaRzCrwckd302Y=; b=AwsE9lSbRe6b6xgt4LrumNo1ocjTgKWZo20prJpngAIgw/Wjs43G2rn7l6XeXPqrM+ 0maUrR6RuIjl59hvutkPTmPam2fsrQwrQm+IVJweG3+2XEF7cwOe7qKEsnxE9zihrE3O joRXIUfcCXVsL2V3ccqDxs4a0xJEXF+aac18Ue172lzp7mYWYCnF9JyU8GgPy9cKkY8M vMHn4GAq9yioqUeiJrIIHwdkTerDztuebgDiGZNsZ2BDWdihZWq08ZfomPMHNLAuAsO/ 0DRzqEHN59dfdawGFQZNtCPB3wsamp5893lwxVCn7/uOrV31gfu1PSNIK+ELWo1+A9uh ToNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784761372; x=1785366172; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Kv31Od05MjV5ejp4GXE3h+wOouFnNcaRzCrwckd302Y=; b=Bm9JWL1eTZW1iLCtYLEClyRBytsUBtf6eY69k0dLNxR/3M6bvq0XDJgr806vv+SLwY I6vuLxYfWcX/TKEMxm3zRZOgqB+f2iDXbQWFBfIDAbPX7/Ie+4YCLTd1cF2HhNa19R9u yiSa55+KG70Mv73YO9BJJW60WwTN6ZcaQQE0U9sIlrAC2efhz6b1AcpdQlVWHTMhUqqk govVQxROHlUXlYZR8FlRl5mFm3ITNPfHT0sxLI8XUYyQX5LTiJg/ZgiFWpUL7VNr6hwJ fGEuFeOm+X0i636YEYsJ4QbVftYADuIDxbcWjy4IXtYcLpYUNOA62jmmdVKBsGXheHXf h8WA== X-Forwarded-Encrypted: i=1; AHgh+RrbfIxmlaIgIHWvRZMrGeRwjZR58cf2Z5Gmrq8KrczZC+NE8V8T/w1bG0IhnZ0X8myAuY9jB7CaLrZM+54=@vger.kernel.org X-Gm-Message-State: AOJu0Yw1mdGdn9IOfxeNs3cUWmjZz2DkAFKp+YSohteAxE1HLMCWpeI0 jg3olkdxyp+9YkpRatUGIof13jHUpceuyaZocNgBBHSrpmX2yhYCQ5QC X-Gm-Gg: AR+sD12kM+56pc4QgyHkbTEUXIFk/ubrukGTHxxytzestuokG7PC+v/t6Lmo5sEVYZR jM5vEEiWkNmmf8bOU4dNYv+Bu/n+AGdzbJdKFCErZvSj6LeDTPpD6T9pIysQk915EA+v9ImNiWW pNQluIxoodNy4puS1NgeTXGvyeZkdt/e019xqfsyHAcvhqWIYh6vzrsjdHHseUiWf2ltiS180n9 i16w035SitgbrFXCanLoDrlnOXFm1kEkhPprWQ0J1/9pWyCGiZ62T/fCnwb64rhgQyDlC6dL3uT Tng/MBwlKQjwwDPeV0P0hPri+OCLnwNJN2oKLtRmcMniqDtLFIoMC26nahgRWPftFHgdT0tb5t/ /dfhU3PWJpsyy/BDVNocDQchW/Vvv1eBJe76CROp2Zsr8LazEloz6jvA+p/63SZ8wJwGTaPiWMx 7OXO0hQFUdy7TU+bBzn6pCWl5g X-Received: by 2002:a05:600c:46ce:b0:495:4d88:e630 with SMTP id 5b1f17b1804b1-49573cc9704mr6470555e9.10.1784761371977; Wed, 22 Jul 2026 16:02:51 -0700 (PDT) Received: from localhost.localdomain ([72.255.58.127]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-495653c8760sm163276375e9.14.2026.07.22.16.02.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2026 16:02:51 -0700 (PDT) From: Mahad Ibrahim To: Kees Cook Cc: Arnd Bergmann , Greg Kroah-Hartman , Mike Rapoport , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Mahad Ibrahim Subject: [PATCH] lkdtm: use kmalloc() instead of __get_free_page Date: Wed, 22 Jul 2026 23:02:46 +0000 Message-ID: <20260722230246.2869-1-mahad.ibrahim.dev@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit lkdtm_debugfs_entry and direct_entry use __get_free_page to allocate a temporary buffer, perform copy_from_user to get the crashtype name, strim() to strip whitespace and find_crashtype to find the corresponding crashtype that is being requested. The lkdtm_debugfs_read uses __get_free_page to allocate a temporary buffer to store all the available crashtypes, and then copy it to userspace. The buffers that are allocated can be allocated with kmalloc as there is nothing special that requires a struct page, or the page allocator. kmalloc() additionally provides a better API that doesn't require ugly casts which obfuscate the code and kfree does not need to know the size of the freed object. Replace use of __get_free_page() with kmalloc(). Signed-off-by: Mahad Ibrahim --- drivers/misc/lkdtm/core.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/misc/lkdtm/core.c b/drivers/misc/lkdtm/core.c index ededa32d6744..01bebcb33bd4 100644 --- a/drivers/misc/lkdtm/core.c +++ b/drivers/misc/lkdtm/core.c @@ -236,11 +236,11 @@ static ssize_t lkdtm_debugfs_entry(struct file *f, if (count >= PAGE_SIZE) return -EINVAL; - buf = (char *)__get_free_page(GFP_KERNEL); + buf = kmalloc(PAGE_SIZE, GFP_KERNEL); if (!buf) return -ENOMEM; if (copy_from_user(buf, user_buf, count)) { - free_page((unsigned long) buf); + kfree(buf); return -EFAULT; } /* NULL-terminate and remove enter */ @@ -248,7 +248,7 @@ static ssize_t lkdtm_debugfs_entry(struct file *f, strim(buf); crashtype = find_crashtype(buf); - free_page((unsigned long)buf); + kfree(buf); if (!crashtype) return -EINVAL; @@ -271,7 +271,7 @@ static ssize_t lkdtm_debugfs_read(struct file *f, char __user *user_buf, ssize_t out; char *buf; - buf = (char *)__get_free_page(GFP_KERNEL); + buf = kmalloc(PAGE_SIZE, GFP_KERNEL); if (buf == NULL) return -ENOMEM; @@ -290,7 +290,7 @@ static ssize_t lkdtm_debugfs_read(struct file *f, char __user *user_buf, out = simple_read_from_buffer(user_buf, count, off, buf, n); - free_page((unsigned long) buf); + kfree(buf); return out; } @@ -313,11 +313,11 @@ static ssize_t direct_entry(struct file *f, const char __user *user_buf, if (count < 1) return -EINVAL; - buf = (char *)__get_free_page(GFP_KERNEL); + buf = kmalloc(PAGE_SIZE, GFP_KERNEL); if (!buf) return -ENOMEM; if (copy_from_user(buf, user_buf, count)) { - free_page((unsigned long) buf); + kfree(buf); return -EFAULT; } /* NULL-terminate and remove enter */ @@ -325,7 +325,7 @@ static ssize_t direct_entry(struct file *f, const char __user *user_buf, strim(buf); crashtype = find_crashtype(buf); - free_page((unsigned long) buf); + kfree(buf); if (!crashtype) return -EINVAL; -- 2.54.0