Use of mmap_sem in __qbuf_userptr()
Hello,
so after a long pause I've got back to my simplification patches aroundget_user_pages(). After the simplification done by commit f035eb4e976ef5 (videobuf2: fix lockdep warning) it seems unnecessary to take mmap_sem already when calling __qbuf_userptr(). As far as I understand what __qbuf_userptr() does, the only thing where mmap_sem is needed is for get_userptr and possibly put_userptr memops. So it should be possible to push mmap_sem locking down into these memops, shouldn't it? Or am I missing something in __qbuf_userptr() for which mmap_sem is also necessary?
If I'm right, I can prepare patches to do that (and then on top of those rebase patches which will make v4l2 core use some mm helper functions so they don't have to care about details of mm locking, vmas, etc.).
Honza
Signature · 2 lines
Jan Kara <[email protected]> SUSE Labs, CR
Hi Jan,
Quoted 10 lines · Jan Kara
Hello,
so after a long pause I've got back to my simplification patches around
get_user_pages(). After the simplification done by commitf035eb4e976ef5(videobuf2: fix lockdep warning) it seems unnecessary to takemmap_semalready when calling__qbuf_userptr(). As far as I understand what__qbuf_userptr()does, the only thing wheremmap_semis needed is forget_userptrand possiblyput_userptrmemops. So it should be possible to pushmmap_semlocking down into these memops, shouldn't it? Or am I missing something in__qbuf_userptr()for whichmmap_semis also necessary?
No, you are correct. The mmap_sem can be pushed down, either to __qbuf_userptr or all the way to the videobuf2-dma/vmalloc get/put_userptr ops.
Quoted 3 lines
If I'm right, I can prepare patches to do that (and then on top of those rebase patches which will make v4l2 core use some mm helper functions so they don't have to care about details of mm locking, vmas, etc.).
That would be really nice.
Regards,
Hans