All of lore.kernel.org
 help / color / mirror / Atom feed
* shmat(2) returns page size aligned memory address
@ 2017-10-08 15:37 Yubin Ruan
  2017-10-08 15:39 ` Yubin Ruan
  2017-10-09 14:27 ` [PATCH] " Yubin Ruan
  0 siblings, 2 replies; 5+ messages in thread
From: Yubin Ruan @ 2017-10-08 15:37 UTC (permalink / raw)
  To: linux-man, Michael Kerrisk (man-pages), linux-mm-u79uwXL29TY76Z2rM5mHXA

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 from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: shmat(2) returns page size aligned memory address
  2017-10-08 15:37 shmat(2) returns page size aligned memory address Yubin Ruan
@ 2017-10-08 15:39 ` Yubin Ruan
  2017-10-09 14:27 ` [PATCH] " Yubin Ruan
  1 sibling, 0 replies; 5+ 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] 5+ 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; 5+ messages in thread
From: Michael Kerrisk (man-opages) @ 2017-10-09  8:28 UTC (permalink / raw)
  To: Yubin Ruan, linux-man, linux-mm-Bw31MaZKKs3YtjvyW6yDsg
  Cc: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w

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 from this list: send the line "unsubscribe linux-man" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

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

* Re: [PATCH] shmat(2) returns page size aligned memory address
@ 2017-10-09  8:28     ` Michael Kerrisk (man-opages)
  0 siblings, 0 replies; 5+ 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] 5+ messages in thread

* [PATCH] shmat(2) returns page size aligned memory address
  2017-10-08 15:37 shmat(2) returns page size aligned memory address Yubin Ruan
  2017-10-08 15:39 ` Yubin Ruan
@ 2017-10-09 14:27 ` Yubin Ruan
  2017-10-09  8:28     ` Michael Kerrisk (man-opages)
  1 sibling, 1 reply; 5+ 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] 5+ messages in thread

end of thread, other threads:[~2017-10-09 14:27 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-08 15:37 shmat(2) returns page size aligned memory address Yubin Ruan
2017-10-08 15:39 ` Yubin Ruan
2017-10-09 14:27 ` [PATCH] " Yubin Ruan
2017-10-09  8:28   ` Michael Kerrisk (man-opages)
2017-10-09  8:28     ` Michael Kerrisk (man-opages)

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.