Re: [PATCH] pagemap: update documentation

2015-07-21 Thread Naoya Horiguchi
On Thu, Jul 16, 2015 at 09:47:42PM +0300, Konstantin Khlebnikov wrote:
> Notes about recent changes.
> 
> Signed-off-by: Konstantin Khlebnikov 
> ---
>  Documentation/vm/pagemap.txt |   14 --
>  1 file changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
> index 3cfbbb333ea1..aab39aa7dd8f 100644
> --- a/Documentation/vm/pagemap.txt
> +++ b/Documentation/vm/pagemap.txt
> @@ -16,12 +16,17 @@ There are three components to pagemap:
>  * Bits 0-4   swap type if swapped
>  * Bits 5-54  swap offset if swapped
>  * Bit  55pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
> -* Bit  56page exlusively mapped
> +* Bit  56page exclusively mapped (since 4.2)
>  * Bits 57-60 zero
> -* Bit  61page is file-page or shared-anon
> +* Bit  61page is file-page or shared-anon (since 3.5)
>  * Bit  62page swapped
>  * Bit  63page present
>  
> +   Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs:
> +   for unprivileged users from 4.0 till 4.2 open fails with -EPERM, starting

I'm expecting that this patch will be merged before 4.2 is released, so if 
that's
right, stating "till 4.2" might be incorrect.

> +   from from 4.2 PFN field is zeroed if user has no CAP_SYS_ADMIN capability.

"from" duplicates ...

Thanks,
Naoya Horiguchi

> +   Reason: information about PFNs helps in exploiting Rowhammer 
> vulnerability.
> +
> If the page is not present but in swap, then the PFN contains an
> encoding of the swap file number and the page's offset into the
> swap. Unmapped pages return a null PFN. This allows determining
> @@ -160,3 +165,8 @@ Other notes:
>  Reading from any of the files will return -EINVAL if you are not starting
>  the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
>  into the file), or if the size of the read is not a multiple of 8 bytes.
> +
> +Before Linux 3.11 pagemap bits 55-60 were used for "page-shift" (which is
> +always 12 at most architectures). Since Linux 3.11 their meaning changes
> +after first clear of soft-dirty bits. Since Linux 4.2 they are used for
> +flags unconditionally.
> --
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH] pagemap: update documentation

2015-07-21 Thread Naoya Horiguchi
On Thu, Jul 16, 2015 at 09:47:42PM +0300, Konstantin Khlebnikov wrote:
 Notes about recent changes.
 
 Signed-off-by: Konstantin Khlebnikov khlebni...@yandex-team.ru
 ---
  Documentation/vm/pagemap.txt |   14 --
  1 file changed, 12 insertions(+), 2 deletions(-)
 
 diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
 index 3cfbbb333ea1..aab39aa7dd8f 100644
 --- a/Documentation/vm/pagemap.txt
 +++ b/Documentation/vm/pagemap.txt
 @@ -16,12 +16,17 @@ There are three components to pagemap:
  * Bits 0-4   swap type if swapped
  * Bits 5-54  swap offset if swapped
  * Bit  55pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
 -* Bit  56page exlusively mapped
 +* Bit  56page exclusively mapped (since 4.2)
  * Bits 57-60 zero
 -* Bit  61page is file-page or shared-anon
 +* Bit  61page is file-page or shared-anon (since 3.5)
  * Bit  62page swapped
  * Bit  63page present
  
 +   Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs:
 +   for unprivileged users from 4.0 till 4.2 open fails with -EPERM, starting

I'm expecting that this patch will be merged before 4.2 is released, so if 
that's
right, stating till 4.2 might be incorrect.

 +   from from 4.2 PFN field is zeroed if user has no CAP_SYS_ADMIN capability.

from duplicates ...

Thanks,
Naoya Horiguchi

 +   Reason: information about PFNs helps in exploiting Rowhammer 
 vulnerability.
 +
 If the page is not present but in swap, then the PFN contains an
 encoding of the swap file number and the page's offset into the
 swap. Unmapped pages return a null PFN. This allows determining
 @@ -160,3 +165,8 @@ Other notes:
  Reading from any of the files will return -EINVAL if you are not starting
  the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
  into the file), or if the size of the read is not a multiple of 8 bytes.
 +
 +Before Linux 3.11 pagemap bits 55-60 were used for page-shift (which is
 +always 12 at most architectures). Since Linux 3.11 their meaning changes
 +after first clear of soft-dirty bits. Since Linux 4.2 they are used for
 +flags unconditionally.
 --
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] pagemap: update documentation

2015-07-16 Thread Konstantin Khlebnikov
Notes about recent changes.

Signed-off-by: Konstantin Khlebnikov 
---
 Documentation/vm/pagemap.txt |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 3cfbbb333ea1..aab39aa7dd8f 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -16,12 +16,17 @@ There are three components to pagemap:
 * Bits 0-4   swap type if swapped
 * Bits 5-54  swap offset if swapped
 * Bit  55pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
-* Bit  56page exlusively mapped
+* Bit  56page exclusively mapped (since 4.2)
 * Bits 57-60 zero
-* Bit  61page is file-page or shared-anon
+* Bit  61page is file-page or shared-anon (since 3.5)
 * Bit  62page swapped
 * Bit  63page present
 
+   Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs:
+   for unprivileged users from 4.0 till 4.2 open fails with -EPERM, starting
+   from from 4.2 PFN field is zeroed if user has no CAP_SYS_ADMIN capability.
+   Reason: information about PFNs helps in exploiting Rowhammer vulnerability.
+
If the page is not present but in swap, then the PFN contains an
encoding of the swap file number and the page's offset into the
swap. Unmapped pages return a null PFN. This allows determining
@@ -160,3 +165,8 @@ Other notes:
 Reading from any of the files will return -EINVAL if you are not starting
 the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
 into the file), or if the size of the read is not a multiple of 8 bytes.
+
+Before Linux 3.11 pagemap bits 55-60 were used for "page-shift" (which is
+always 12 at most architectures). Since Linux 3.11 their meaning changes
+after first clear of soft-dirty bits. Since Linux 4.2 they are used for
+flags unconditionally.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH] pagemap: update documentation

2015-07-16 Thread Konstantin Khlebnikov
Notes about recent changes.

Signed-off-by: Konstantin Khlebnikov khlebni...@yandex-team.ru
---
 Documentation/vm/pagemap.txt |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/Documentation/vm/pagemap.txt b/Documentation/vm/pagemap.txt
index 3cfbbb333ea1..aab39aa7dd8f 100644
--- a/Documentation/vm/pagemap.txt
+++ b/Documentation/vm/pagemap.txt
@@ -16,12 +16,17 @@ There are three components to pagemap:
 * Bits 0-4   swap type if swapped
 * Bits 5-54  swap offset if swapped
 * Bit  55pte is soft-dirty (see Documentation/vm/soft-dirty.txt)
-* Bit  56page exlusively mapped
+* Bit  56page exclusively mapped (since 4.2)
 * Bits 57-60 zero
-* Bit  61page is file-page or shared-anon
+* Bit  61page is file-page or shared-anon (since 3.5)
 * Bit  62page swapped
 * Bit  63page present
 
+   Since Linux 4.0 only users with the CAP_SYS_ADMIN capability can get PFNs:
+   for unprivileged users from 4.0 till 4.2 open fails with -EPERM, starting
+   from from 4.2 PFN field is zeroed if user has no CAP_SYS_ADMIN capability.
+   Reason: information about PFNs helps in exploiting Rowhammer vulnerability.
+
If the page is not present but in swap, then the PFN contains an
encoding of the swap file number and the page's offset into the
swap. Unmapped pages return a null PFN. This allows determining
@@ -160,3 +165,8 @@ Other notes:
 Reading from any of the files will return -EINVAL if you are not starting
 the read on an 8-byte boundary (e.g., if you sought an odd number of bytes
 into the file), or if the size of the read is not a multiple of 8 bytes.
+
+Before Linux 3.11 pagemap bits 55-60 were used for page-shift (which is
+always 12 at most architectures). Since Linux 3.11 their meaning changes
+after first clear of soft-dirty bits. Since Linux 4.2 they are used for
+flags unconditionally.

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/