All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] bpf/umd possible deadcode
@ 2024-11-14  2:23 linux
  2024-11-14  2:23 ` [PATCH 1/2] bpf: Don't select USERMODE_DRIVER linux
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: linux @ 2024-11-14  2:23 UTC (permalink / raw)
  To: ast, daniel, andrii, martin.lau, roberto.sassu, bpf
  Cc: linux-kernel, Dr. David Alan Gilbert

From: "Dr. David Alan Gilbert" <linux@treblig.org>


Hi,
  I'm not 100% sure about these, since I'm not quite
sure how to test it properly.

  As far as I can tell the UMD isn't needed by bpf itself
any more; so I've got one patch that just removes that select.
But then that leaves no users of umd itself; and I split that
separately since I saw there was still some discussion this year
on other uses.

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>

Dave

Dr. David Alan Gilbert (2):
  bpf: Don't select USERMODE_DRIVER
  umd: Remove

 include/linux/usermode_driver.h |  19 ----
 kernel/Makefile                 |   1 -
 kernel/bpf/preload/Kconfig      |   5 -
 kernel/usermode_driver.c        | 191 --------------------------------
 4 files changed, 216 deletions(-)
 delete mode 100644 include/linux/usermode_driver.h
 delete mode 100644 kernel/usermode_driver.c

-- 
2.47.0


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/2] bpf: Don't select USERMODE_DRIVER
  2024-11-14  2:23 [PATCH 0/2] bpf/umd possible deadcode linux
@ 2024-11-14  2:23 ` linux
  2024-11-14  2:24 ` [PATCH 2/2] umd: Remove linux
  2025-01-27 13:55 ` [PATCH 0/2] bpf/umd possible deadcode Dr. David Alan Gilbert
  2 siblings, 0 replies; 4+ messages in thread
From: linux @ 2024-11-14  2:23 UTC (permalink / raw)
  To: ast, daniel, andrii, martin.lau, roberto.sassu, bpf
  Cc: linux-kernel, Dr. David Alan Gilbert

From: "Dr. David Alan Gilbert" <linux@treblig.org>

USERMODE_DRIVER isn't neede dby BPF_PRELOAD anymore since
commit cb80ddc67152 ("bpf: Convert bpf_preload.ko to use light skeleton.")

Remove the depend Kconfig.

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
---
 kernel/bpf/preload/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/kernel/bpf/preload/Kconfig b/kernel/bpf/preload/Kconfig
index c9d45c9d6918..f9b11d01c3b5 100644
--- a/kernel/bpf/preload/Kconfig
+++ b/kernel/bpf/preload/Kconfig
@@ -10,7 +10,6 @@ menuconfig BPF_PRELOAD
 	# The dependency on !COMPILE_TEST prevents it from being enabled
 	# in allmodconfig or allyesconfig configurations
 	depends on !COMPILE_TEST
-	select USERMODE_DRIVER
 	help
 	  This builds kernel module with several embedded BPF programs that are
 	  pinned into BPF FS mount point as human readable files that are
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] umd: Remove
  2024-11-14  2:23 [PATCH 0/2] bpf/umd possible deadcode linux
  2024-11-14  2:23 ` [PATCH 1/2] bpf: Don't select USERMODE_DRIVER linux
@ 2024-11-14  2:24 ` linux
  2025-01-27 13:55 ` [PATCH 0/2] bpf/umd possible deadcode Dr. David Alan Gilbert
  2 siblings, 0 replies; 4+ messages in thread
From: linux @ 2024-11-14  2:24 UTC (permalink / raw)
  To: ast, daniel, andrii, martin.lau, roberto.sassu, bpf
  Cc: linux-kernel, Dr. David Alan Gilbert

From: "Dr. David Alan Gilbert" <linux@treblig.org>

The last use of the usermode driver code was removed by
commit 98e20e5e13d2 ("bpfilter: remove bpfilter")

Remove the code.

Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
---
 include/linux/usermode_driver.h |  19 ----
 kernel/Makefile                 |   1 -
 kernel/bpf/preload/Kconfig      |   4 -
 kernel/usermode_driver.c        | 191 --------------------------------
 4 files changed, 215 deletions(-)
 delete mode 100644 include/linux/usermode_driver.h
 delete mode 100644 kernel/usermode_driver.c

diff --git a/include/linux/usermode_driver.h b/include/linux/usermode_driver.h
deleted file mode 100644
index ad970416260d..000000000000
--- a/include/linux/usermode_driver.h
+++ /dev/null
@@ -1,19 +0,0 @@
-#ifndef __LINUX_USERMODE_DRIVER_H__
-#define __LINUX_USERMODE_DRIVER_H__
-
-#include <linux/umh.h>
-#include <linux/path.h>
-
-struct umd_info {
-	const char *driver_name;
-	struct file *pipe_to_umh;
-	struct file *pipe_from_umh;
-	struct path wd;
-	struct pid *tgid;
-};
-int umd_load_blob(struct umd_info *info, const void *data, size_t len);
-int umd_unload_blob(struct umd_info *info);
-int fork_usermode_driver(struct umd_info *info);
-void umd_cleanup_helper(struct umd_info *info);
-
-#endif /* __LINUX_USERMODE_DRIVER_H__ */
diff --git a/kernel/Makefile b/kernel/Makefile
index 87866b037fbe..25d58da2a6ee 100644
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -12,7 +12,6 @@ obj-y     = fork.o exec_domain.o panic.o \
 	    notifier.o ksysfs.o cred.o reboot.o \
 	    async.o range.o smpboot.o ucount.o regset.o ksyms_common.o
 
-obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
 obj-$(CONFIG_MULTIUSER) += groups.o
 obj-$(CONFIG_VHOST_TASK) += vhost_task.o
 
diff --git a/kernel/bpf/preload/Kconfig b/kernel/bpf/preload/Kconfig
index f9b11d01c3b5..aef7b0bc96d6 100644
--- a/kernel/bpf/preload/Kconfig
+++ b/kernel/bpf/preload/Kconfig
@@ -1,8 +1,4 @@
 # SPDX-License-Identifier: GPL-2.0-only
-config USERMODE_DRIVER
-	bool
-	default n
-
 menuconfig BPF_PRELOAD
 	bool "Preload BPF file system with kernel specific program and map iterators"
 	depends on BPF
diff --git a/kernel/usermode_driver.c b/kernel/usermode_driver.c
deleted file mode 100644
index 8303f4c7ca71..000000000000
--- a/kernel/usermode_driver.c
+++ /dev/null
@@ -1,191 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-only
-/*
- * umd - User mode driver support
- */
-#include <linux/shmem_fs.h>
-#include <linux/pipe_fs_i.h>
-#include <linux/mount.h>
-#include <linux/fs_struct.h>
-#include <linux/task_work.h>
-#include <linux/usermode_driver.h>
-
-static struct vfsmount *blob_to_mnt(const void *data, size_t len, const char *name)
-{
-	struct file_system_type *type;
-	struct vfsmount *mnt;
-	struct file *file;
-	ssize_t written;
-	loff_t pos = 0;
-
-	type = get_fs_type("tmpfs");
-	if (!type)
-		return ERR_PTR(-ENODEV);
-
-	mnt = kern_mount(type);
-	put_filesystem(type);
-	if (IS_ERR(mnt))
-		return mnt;
-
-	file = file_open_root_mnt(mnt, name, O_CREAT | O_WRONLY, 0700);
-	if (IS_ERR(file)) {
-		kern_unmount(mnt);
-		return ERR_CAST(file);
-	}
-
-	written = kernel_write(file, data, len, &pos);
-	if (written != len) {
-		int err = written;
-		if (err >= 0)
-			err = -ENOMEM;
-		filp_close(file, NULL);
-		kern_unmount(mnt);
-		return ERR_PTR(err);
-	}
-
-	fput(file);
-
-	/* Flush delayed fput so exec can open the file read-only */
-	flush_delayed_fput();
-	task_work_run();
-	return mnt;
-}
-
-/**
- * umd_load_blob - Remember a blob of bytes for fork_usermode_driver
- * @info: information about usermode driver
- * @data: a blob of bytes that can be executed as a file
- * @len:  The lentgh of the blob
- *
- */
-int umd_load_blob(struct umd_info *info, const void *data, size_t len)
-{
-	struct vfsmount *mnt;
-
-	if (WARN_ON_ONCE(info->wd.dentry || info->wd.mnt))
-		return -EBUSY;
-
-	mnt = blob_to_mnt(data, len, info->driver_name);
-	if (IS_ERR(mnt))
-		return PTR_ERR(mnt);
-
-	info->wd.mnt = mnt;
-	info->wd.dentry = mnt->mnt_root;
-	return 0;
-}
-EXPORT_SYMBOL_GPL(umd_load_blob);
-
-/**
- * umd_unload_blob - Disassociate @info from a previously loaded blob
- * @info: information about usermode driver
- *
- */
-int umd_unload_blob(struct umd_info *info)
-{
-	if (WARN_ON_ONCE(!info->wd.mnt ||
-			 !info->wd.dentry ||
-			 info->wd.mnt->mnt_root != info->wd.dentry))
-		return -EINVAL;
-
-	kern_unmount(info->wd.mnt);
-	info->wd.mnt = NULL;
-	info->wd.dentry = NULL;
-	return 0;
-}
-EXPORT_SYMBOL_GPL(umd_unload_blob);
-
-static int umd_setup(struct subprocess_info *info, struct cred *new)
-{
-	struct umd_info *umd_info = info->data;
-	struct file *from_umh[2];
-	struct file *to_umh[2];
-	int err;
-
-	/* create pipe to send data to umh */
-	err = create_pipe_files(to_umh, 0);
-	if (err)
-		return err;
-	err = replace_fd(0, to_umh[0], 0);
-	fput(to_umh[0]);
-	if (err < 0) {
-		fput(to_umh[1]);
-		return err;
-	}
-
-	/* create pipe to receive data from umh */
-	err = create_pipe_files(from_umh, 0);
-	if (err) {
-		fput(to_umh[1]);
-		replace_fd(0, NULL, 0);
-		return err;
-	}
-	err = replace_fd(1, from_umh[1], 0);
-	fput(from_umh[1]);
-	if (err < 0) {
-		fput(to_umh[1]);
-		replace_fd(0, NULL, 0);
-		fput(from_umh[0]);
-		return err;
-	}
-
-	set_fs_pwd(current->fs, &umd_info->wd);
-	umd_info->pipe_to_umh = to_umh[1];
-	umd_info->pipe_from_umh = from_umh[0];
-	umd_info->tgid = get_pid(task_tgid(current));
-	return 0;
-}
-
-static void umd_cleanup(struct subprocess_info *info)
-{
-	struct umd_info *umd_info = info->data;
-
-	/* cleanup if umh_setup() was successful but exec failed */
-	if (info->retval)
-		umd_cleanup_helper(umd_info);
-}
-
-/**
- * umd_cleanup_helper - release the resources which were allocated in umd_setup
- * @info: information about usermode driver
- */
-void umd_cleanup_helper(struct umd_info *info)
-{
-	fput(info->pipe_to_umh);
-	fput(info->pipe_from_umh);
-	put_pid(info->tgid);
-	info->tgid = NULL;
-}
-EXPORT_SYMBOL_GPL(umd_cleanup_helper);
-
-/**
- * fork_usermode_driver - fork a usermode driver
- * @info: information about usermode driver (shouldn't be NULL)
- *
- * Returns either negative error or zero which indicates success in
- * executing a usermode driver. In such case 'struct umd_info *info'
- * is populated with two pipes and a tgid of the process. The caller is
- * responsible for health check of the user process, killing it via
- * tgid, and closing the pipes when user process is no longer needed.
- */
-int fork_usermode_driver(struct umd_info *info)
-{
-	struct subprocess_info *sub_info;
-	const char *argv[] = { info->driver_name, NULL };
-	int err;
-
-	if (WARN_ON_ONCE(info->tgid))
-		return -EBUSY;
-
-	err = -ENOMEM;
-	sub_info = call_usermodehelper_setup(info->driver_name,
-					     (char **)argv, NULL, GFP_KERNEL,
-					     umd_setup, umd_cleanup, info);
-	if (!sub_info)
-		goto out;
-
-	err = call_usermodehelper_exec(sub_info, UMH_WAIT_EXEC);
-out:
-	return err;
-}
-EXPORT_SYMBOL_GPL(fork_usermode_driver);
-
-
-- 
2.47.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 0/2] bpf/umd possible deadcode
  2024-11-14  2:23 [PATCH 0/2] bpf/umd possible deadcode linux
  2024-11-14  2:23 ` [PATCH 1/2] bpf: Don't select USERMODE_DRIVER linux
  2024-11-14  2:24 ` [PATCH 2/2] umd: Remove linux
@ 2025-01-27 13:55 ` Dr. David Alan Gilbert
  2 siblings, 0 replies; 4+ messages in thread
From: Dr. David Alan Gilbert @ 2025-01-27 13:55 UTC (permalink / raw)
  To: ast, daniel, andrii, martin.lau, roberto.sassu, bpf; +Cc: linux-kernel

* linux@treblig.org (linux@treblig.org) wrote:
> From: "Dr. David Alan Gilbert" <linux@treblig.org>
> 
> 
> Hi,
>   I'm not 100% sure about these, since I'm not quite
> sure how to test it properly.
> 
>   As far as I can tell the UMD isn't needed by bpf itself
> any more; so I've got one patch that just removes that select.
> But then that leaves no users of umd itself; and I split that
> separately since I saw there was still some discussion this year
> on other uses.

Hi,
  Does anyone have any views on this pair?

Thanks,

Dave

> Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org>
> 
> Dave
> 
> Dr. David Alan Gilbert (2):
>   bpf: Don't select USERMODE_DRIVER
>   umd: Remove
> 
>  include/linux/usermode_driver.h |  19 ----
>  kernel/Makefile                 |   1 -
>  kernel/bpf/preload/Kconfig      |   5 -
>  kernel/usermode_driver.c        | 191 --------------------------------
>  4 files changed, 216 deletions(-)
>  delete mode 100644 include/linux/usermode_driver.h
>  delete mode 100644 kernel/usermode_driver.c
> 
> -- 
> 2.47.0
> 
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\        dave @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2025-01-27 13:56 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-14  2:23 [PATCH 0/2] bpf/umd possible deadcode linux
2024-11-14  2:23 ` [PATCH 1/2] bpf: Don't select USERMODE_DRIVER linux
2024-11-14  2:24 ` [PATCH 2/2] umd: Remove linux
2025-01-27 13:55 ` [PATCH 0/2] bpf/umd possible deadcode Dr. David Alan Gilbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.