2015-06-06 09:55:31

by Piotr Kwapulinski

[permalink] [raw]
Subject: [PATCH] mm/mmap.c: optimization of do_mmap_pgoff function

The simple check for zero length memory mapping may be performed
earlier. It causes that in case of zero length memory mapping some
unnecessary code is not executed at all. It does not make the code less
readable and saves some CPU cycles.

Signed-off-by: Piotr Kwapulinski <[email protected]>
---
mm/mmap.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mm/mmap.c b/mm/mmap.c
index bb50cac..aa632ad 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1258,6 +1258,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,

*populate = 0;

+ if (!len)
+ return -EINVAL;
+
/*
* Does the application expect PROT_READ to imply PROT_EXEC?
*
@@ -1268,9 +1271,6 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
prot |= PROT_EXEC;

- if (!len)
- return -EINVAL;
-
if (!(flags & MAP_FIXED))
addr = round_hint_to_min(addr);

--
2.3.7


2015-06-08 08:18:08

by Michal Hocko

[permalink] [raw]
Subject: Re: [PATCH] mm/mmap.c: optimization of do_mmap_pgoff function

On Sat 06-06-15 11:54:32, Piotr Kwapulinski wrote:
> The simple check for zero length memory mapping may be performed
> earlier. It causes that in case of zero length memory mapping some
> unnecessary code is not executed at all. It does not make the code less
> readable and saves some CPU cycles.
>
> Signed-off-by: Piotr Kwapulinski <[email protected]>

Acked-by: Michal Hocko <[email protected]>

> ---
> mm/mmap.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/mm/mmap.c b/mm/mmap.c
> index bb50cac..aa632ad 100644
> --- a/mm/mmap.c
> +++ b/mm/mmap.c
> @@ -1258,6 +1258,9 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
>
> *populate = 0;
>
> + if (!len)
> + return -EINVAL;
> +
> /*
> * Does the application expect PROT_READ to imply PROT_EXEC?
> *
> @@ -1268,9 +1271,6 @@ unsigned long do_mmap_pgoff(struct file *file, unsigned long addr,
> if (!(file && (file->f_path.mnt->mnt_flags & MNT_NOEXEC)))
> prot |= PROT_EXEC;
>
> - if (!len)
> - return -EINVAL;
> -
> if (!(flags & MAP_FIXED))
> addr = round_hint_to_min(addr);
>
> --
> 2.3.7
>

--
Michal Hocko
SUSE Labs

2015-06-08 15:42:59

by Rik van Riel

[permalink] [raw]
Subject: Re: [PATCH] mm/mmap.c: optimization of do_mmap_pgoff function

On 06/06/2015 05:54 AM, Piotr Kwapulinski wrote:
> The simple check for zero length memory mapping may be performed
> earlier. It causes that in case of zero length memory mapping some
> unnecessary code is not executed at all. It does not make the code less
> readable and saves some CPU cycles.
>
> Signed-off-by: Piotr Kwapulinski <[email protected]>

Acked-by: Rik van Riel <[email protected]>

--
All rights reversed