The file backend takes any path that isn't a block device. With buffered_io=1 that includes files on procfs or sysfs which then get read and written by a kernel worker on behalf of the host. Refuse files on pseudo filesystems just like loop does.
Signed-off-by: Christian Brauner (Amutable) <[email protected]> --- drivers/nvme/target/io-cmd-file.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/nvme/target/io-cmd-file.c b/drivers/nvme/target/io-cmd-file.c index dfa8aa46188c..71c69bac5394 100644 --- a/drivers/nvme/target/io-cmd-file.c +++ b/drivers/nvme/target/io-cmd-file.c @@ -52,6 +52,11 @@ int nvmet_file_ns_enable(struct nvmet_ns *ns) goto err; } + if (file_is_pseudo(ns->file)) { + ret = -EINVAL; + goto err; + } + nvmet_file_ns_revalidate(ns); /* -- 2.53.0
