On Wed, 15 Nov 2023 at 10:50, David Howells dhowells@redhat.com wrote:
This requires access to otherwise unexported core symbols: mm_alloc(), vm_area_alloc(), insert_vm_struct() arch_pick_mmap_layout() and anon_inode_getfile_secure(), which I've exported _GPL.
[?] Would it be better if this were done in core and not in a module?
I'm not going to take this, even if it were to be sent to me through Christian.
I think the exports really show that this shouldn't be done. And yes, doing it in core would avoid the exports, but would be even worse.
Those functions exist for setting up user space. You should be doing this in user space.
I'm getting really fed up with the problems that ther KUnit tests cause. We have a long history of self-inflicted pain due to "unit testing", where it has caused stupid problems like just overflowing the kernel stack etc.
This needs to stop. And this is where I'm putting my foot down. No more KUnit tests that make up interfaces - or use interfaces - that they have absolutely no place using.
From a quick look, what you were doing was checking that the patterns you set up in user space came through ok. Dammit, what's wrong with just using read()/write() on a pipe, or splice, or whatever. It will test exactly the same iov_iter thing.
Kernel code should do things that can *only* be done in the kernel. This is not it.
Linus