* Re: shmat(2) returns page size aligned memory address [not found] <CAJYFCiPhNVCMRVD-QpwsZk0wAKRXzFWcwVZDqLXxsxYfhFcVpg@mail.gmail.com> @ 2017-10-08 15:39 ` Yubin Ruan 2017-10-09 14:27 ` [PATCH] " Yubin Ruan 1 sibling, 0 replies; 3+ messages in thread From: Yubin Ruan @ 2017-10-08 15:39 UTC (permalink / raw) To: linux-man, Michael Kerrisk (man-pages), linux-mm Cc linux-mm 2017-10-08 23:37 GMT+08:00 Yubin Ruan <ablacktshirt@gmail.com>: > Hi Michael, > At the current man page for shmat(2)[1], there is no mentioning > whether the returned memory address of shmat(2) will be page size > aligned or not. As that is quite important to many applications(e.g., > those that use locks heavily and would like to avoid some locks by > some atomic guarantees provided by the CPU), it would be great to > specify that for Linux. > > I walked down the current implementation of shmat(2) in the latest > kernel src and found that shmat(2) does return a page size aligned > memory address: > > SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) > -> do_shmat(...) > -> do_mmap_pgoff(...) > -> do_mmap(...) > -> get_unmapped_area(...) > -> get_area(...) -> offset_in_page(addr) > > there is a `offset_in_page(addr)' assertion at the end and if that is > true a -EINVAL would be returned, by which we can be sure that > shmat(2) will return a page size aligned memory address on success[2]. > > I will create a patch later if that is acceptable. > > Thanks, > Yubin > > [1]: http://man7.org/linux/man-pages/man2/shmat.2.html > [2]: there is also a `offset_in_page(2)' in get_unmapped_area(...), > but that doesn't lead to -EINVAL...I am not sure whether the logic of > that code is right. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] shmat(2) returns page size aligned memory address [not found] <CAJYFCiPhNVCMRVD-QpwsZk0wAKRXzFWcwVZDqLXxsxYfhFcVpg@mail.gmail.com> 2017-10-08 15:39 ` shmat(2) returns page size aligned memory address Yubin Ruan @ 2017-10-09 14:27 ` Yubin Ruan 2017-10-09 8:28 ` Michael Kerrisk (man-opages) 1 sibling, 1 reply; 3+ messages in thread From: Yubin Ruan @ 2017-10-09 14:27 UTC (permalink / raw) To: linux-man, Michael Kerrisk (man-pages), linux-mm On Sun, Oct 08, 2017 at 11:37:05PM +0800, Yubin Ruan wrote: > Hi Michael, > At the current man page for shmat(2)[1], there is no mentioning > whether the returned memory address of shmat(2) will be page size > aligned or not. As that is quite important to many applications(e.g., > those that use locks heavily and would like to avoid some locks by > some atomic guarantees provided by the CPU), it would be great to > specify that for Linux. > > I walked down the current implementation of shmat(2) in the latest > kernel src and found that shmat(2) does return a page size aligned > memory address: > > SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) > -> do_shmat(...) > -> do_mmap_pgoff(...) > -> do_mmap(...) > -> get_unmapped_area(...) > -> get_area(...) -> offset_in_page(addr) > > there is a `offset_in_page(addr)' assertion at the end and if that is > true a -EINVAL would be returned, by which we can be sure that > shmat(2) will return a page size aligned memory address on success[2]. > > I will create a patch later if that is acceptable. > > Thanks, > Yubin > > [1]: http://man7.org/linux/man-pages/man2/shmat.2.html > [2]: there is also a `offset_in_page(2)' in get_unmapped_area(...), > but that doesn't lead to -EINVAL...I am not sure whether the logic of > that code is right. add the page-alignment attribute of the return address of shmat(2) --- diff --git a/man2/shmop.2 b/man2/shmop.2 index 849529f..b8d7595 100644 --- a/man2/shmop.2 +++ b/man2/shmop.2 @@ -63,7 +63,7 @@ with one of the following criteria: If .I shmaddr is NULL, -the system chooses a suitable (unused) address at which to attach +the system chooses a suitable (unused) page-aligned address to attach the segment. .IP * If -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] shmat(2) returns page size aligned memory address 2017-10-09 14:27 ` [PATCH] " Yubin Ruan @ 2017-10-09 8:28 ` Michael Kerrisk (man-opages) 0 siblings, 0 replies; 3+ messages in thread From: Michael Kerrisk (man-opages) @ 2017-10-09 8:28 UTC (permalink / raw) To: Yubin Ruan, linux-man, linux-mm; +Cc: mtk.manpages Thanks, Yubin. Patch applied. Cheers, Michael On 10/09/2017 04:27 PM, Yubin Ruan wrote: > On Sun, Oct 08, 2017 at 11:37:05PM +0800, Yubin Ruan wrote: >> Hi Michael, >> At the current man page for shmat(2)[1], there is no mentioning >> whether the returned memory address of shmat(2) will be page size >> aligned or not. As that is quite important to many applications(e.g., >> those that use locks heavily and would like to avoid some locks by >> some atomic guarantees provided by the CPU), it would be great to >> specify that for Linux. >> >> I walked down the current implementation of shmat(2) in the latest >> kernel src and found that shmat(2) does return a page size aligned >> memory address: >> >> SYSCALL_DEFINE3(shmat, int, shmid, char __user *, shmaddr, int, shmflg) >> -> do_shmat(...) >> -> do_mmap_pgoff(...) >> -> do_mmap(...) >> -> get_unmapped_area(...) >> -> get_area(...) -> offset_in_page(addr) >> >> there is a `offset_in_page(addr)' assertion at the end and if that is >> true a -EINVAL would be returned, by which we can be sure that >> shmat(2) will return a page size aligned memory address on success[2]. >> >> I will create a patch later if that is acceptable. >> >> Thanks, >> Yubin >> >> [1]: http://man7.org/linux/man-pages/man2/shmat.2.html >> [2]: there is also a `offset_in_page(2)' in get_unmapped_area(...), >> but that doesn't lead to -EINVAL...I am not sure whether the logic of >> that code is right. > > add the page-alignment attribute of the return address of shmat(2) > --- > > diff --git a/man2/shmop.2 b/man2/shmop.2 > index 849529f..b8d7595 100644 > --- a/man2/shmop.2 > +++ b/man2/shmop.2 > @@ -63,7 +63,7 @@ with one of the following criteria: > If > .I shmaddr > is NULL, > -the system chooses a suitable (unused) address at which to attach > +the system chooses a suitable (unused) page-aligned address to attach > the segment. > .IP * > If > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2017-10-09 8:28 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <CAJYFCiPhNVCMRVD-QpwsZk0wAKRXzFWcwVZDqLXxsxYfhFcVpg@mail.gmail.com> 2017-10-08 15:39 ` shmat(2) returns page size aligned memory address Yubin Ruan 2017-10-09 14:27 ` [PATCH] " Yubin Ruan 2017-10-09 8:28 ` Michael Kerrisk (man-opages)
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).