Re: [PATCH] mm/shmem.c: check the return value of mpol_to_str()

2013-09-02 Thread Chen Gang
Hello Maintainers:

Please help check this patch, when you have time.

If it need additional test, please let me know, I should try (better to
provide some suggestions for test).


Thanks.

On 08/22/2013 09:04 AM, Chen Gang wrote:
> mpol_to_str() may fail, and not fill the buffer (e.g. -EINVAL), so need
> check about it, or buffer may not be zero based, and next seq_printf()
> will cause issue.
> 
> Also need let shmem_show_mpol() return value, since it may fail.
> 
> Signed-off-by: Chen Gang 
> Reviewed-by: Cyrill Gorcunov 
> ---
>  mm/shmem.c |   16 ++--
>  1 files changed, 10 insertions(+), 6 deletions(-)
> 
> diff --git a/mm/shmem.c b/mm/shmem.c
> index f00c1c1..b4d44db 100644
> --- a/mm/shmem.c
> +++ b/mm/shmem.c
> @@ -883,16 +883,20 @@ redirty:
>  
>  #ifdef CONFIG_NUMA
>  #ifdef CONFIG_TMPFS
> -static void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
> +static int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
>  {
>   char buffer[64];
> + int ret;
>  
>   if (!mpol || mpol->mode == MPOL_DEFAULT)
> - return; /* show nothing */
> + return 0;   /* show nothing */
>  
> - mpol_to_str(buffer, sizeof(buffer), mpol);
> + ret = mpol_to_str(buffer, sizeof(buffer), mpol);
> + if (ret < 0)
> + return ret;
>  
>   seq_printf(seq, ",mpol=%s", buffer);
> + return 0;
>  }
>  
>  static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
> @@ -951,8 +955,9 @@ static struct page *shmem_alloc_page(gfp_t gfp,
>  }
>  #else /* !CONFIG_NUMA */
>  #ifdef CONFIG_TMPFS
> -static inline void shmem_show_mpol(struct seq_file *seq, struct mempolicy 
> *mpol)
> +static inline int shmem_show_mpol(struct seq_file *seq, struct mempolicy 
> *mpol)
>  {
> + return 0;
>  }
>  #endif /* CONFIG_TMPFS */
>  
> @@ -2555,8 +2560,7 @@ static int shmem_show_options(struct seq_file *seq, 
> struct dentry *root)
>   if (!gid_eq(sbinfo->gid, GLOBAL_ROOT_GID))
>   seq_printf(seq, ",gid=%u",
>   from_kgid_munged(_user_ns, sbinfo->gid));
> - shmem_show_mpol(seq, sbinfo->mpol);
> - return 0;
> + return shmem_show_mpol(seq, sbinfo->mpol);
>  }
>  #endif /* CONFIG_TMPFS */
>  
> 


-- 
Chen Gang
--
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] mm/shmem.c: check the return value of mpol_to_str()

2013-09-02 Thread Chen Gang
Hello Maintainers:

Please help check this patch, when you have time.

If it need additional test, please let me know, I should try (better to
provide some suggestions for test).


Thanks.

On 08/22/2013 09:04 AM, Chen Gang wrote:
 mpol_to_str() may fail, and not fill the buffer (e.g. -EINVAL), so need
 check about it, or buffer may not be zero based, and next seq_printf()
 will cause issue.
 
 Also need let shmem_show_mpol() return value, since it may fail.
 
 Signed-off-by: Chen Gang gang.c...@asianux.com
 Reviewed-by: Cyrill Gorcunov gorcu...@gmail.com
 ---
  mm/shmem.c |   16 ++--
  1 files changed, 10 insertions(+), 6 deletions(-)
 
 diff --git a/mm/shmem.c b/mm/shmem.c
 index f00c1c1..b4d44db 100644
 --- a/mm/shmem.c
 +++ b/mm/shmem.c
 @@ -883,16 +883,20 @@ redirty:
  
  #ifdef CONFIG_NUMA
  #ifdef CONFIG_TMPFS
 -static void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
 +static int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
  {
   char buffer[64];
 + int ret;
  
   if (!mpol || mpol-mode == MPOL_DEFAULT)
 - return; /* show nothing */
 + return 0;   /* show nothing */
  
 - mpol_to_str(buffer, sizeof(buffer), mpol);
 + ret = mpol_to_str(buffer, sizeof(buffer), mpol);
 + if (ret  0)
 + return ret;
  
   seq_printf(seq, ,mpol=%s, buffer);
 + return 0;
  }
  
  static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
 @@ -951,8 +955,9 @@ static struct page *shmem_alloc_page(gfp_t gfp,
  }
  #else /* !CONFIG_NUMA */
  #ifdef CONFIG_TMPFS
 -static inline void shmem_show_mpol(struct seq_file *seq, struct mempolicy 
 *mpol)
 +static inline int shmem_show_mpol(struct seq_file *seq, struct mempolicy 
 *mpol)
  {
 + return 0;
  }
  #endif /* CONFIG_TMPFS */
  
 @@ -2555,8 +2560,7 @@ static int shmem_show_options(struct seq_file *seq, 
 struct dentry *root)
   if (!gid_eq(sbinfo-gid, GLOBAL_ROOT_GID))
   seq_printf(seq, ,gid=%u,
   from_kgid_munged(init_user_ns, sbinfo-gid));
 - shmem_show_mpol(seq, sbinfo-mpol);
 - return 0;
 + return shmem_show_mpol(seq, sbinfo-mpol);
  }
  #endif /* CONFIG_TMPFS */
  
 


-- 
Chen Gang
--
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] mm/shmem.c: check the return value of mpol_to_str()

2013-08-21 Thread Chen Gang
mpol_to_str() may fail, and not fill the buffer (e.g. -EINVAL), so need
check about it, or buffer may not be zero based, and next seq_printf()
will cause issue.

Also need let shmem_show_mpol() return value, since it may fail.

Signed-off-by: Chen Gang 
Reviewed-by: Cyrill Gorcunov 
---
 mm/shmem.c |   16 ++--
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/mm/shmem.c b/mm/shmem.c
index f00c1c1..b4d44db 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -883,16 +883,20 @@ redirty:
 
 #ifdef CONFIG_NUMA
 #ifdef CONFIG_TMPFS
-static void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
+static int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
 {
char buffer[64];
+   int ret;
 
if (!mpol || mpol->mode == MPOL_DEFAULT)
-   return; /* show nothing */
+   return 0;   /* show nothing */
 
-   mpol_to_str(buffer, sizeof(buffer), mpol);
+   ret = mpol_to_str(buffer, sizeof(buffer), mpol);
+   if (ret < 0)
+   return ret;
 
seq_printf(seq, ",mpol=%s", buffer);
+   return 0;
 }
 
 static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
@@ -951,8 +955,9 @@ static struct page *shmem_alloc_page(gfp_t gfp,
 }
 #else /* !CONFIG_NUMA */
 #ifdef CONFIG_TMPFS
-static inline void shmem_show_mpol(struct seq_file *seq, struct mempolicy 
*mpol)
+static inline int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
 {
+   return 0;
 }
 #endif /* CONFIG_TMPFS */
 
@@ -2555,8 +2560,7 @@ static int shmem_show_options(struct seq_file *seq, 
struct dentry *root)
if (!gid_eq(sbinfo->gid, GLOBAL_ROOT_GID))
seq_printf(seq, ",gid=%u",
from_kgid_munged(_user_ns, sbinfo->gid));
-   shmem_show_mpol(seq, sbinfo->mpol);
-   return 0;
+   return shmem_show_mpol(seq, sbinfo->mpol);
 }
 #endif /* CONFIG_TMPFS */
 
-- 
1.7.7.6
--
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] mm/shmem.c: check the return value of mpol_to_str()

2013-08-21 Thread Chen Gang
mpol_to_str() may fail, and not fill the buffer (e.g. -EINVAL), so need
check about it, or buffer may not be zero based, and next seq_printf()
will cause issue.

Also need let shmem_show_mpol() return value, since it may fail.

Signed-off-by: Chen Gang gang.c...@asianux.com
Reviewed-by: Cyrill Gorcunov gorcu...@gmail.com
---
 mm/shmem.c |   16 ++--
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/mm/shmem.c b/mm/shmem.c
index f00c1c1..b4d44db 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -883,16 +883,20 @@ redirty:
 
 #ifdef CONFIG_NUMA
 #ifdef CONFIG_TMPFS
-static void shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
+static int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
 {
char buffer[64];
+   int ret;
 
if (!mpol || mpol-mode == MPOL_DEFAULT)
-   return; /* show nothing */
+   return 0;   /* show nothing */
 
-   mpol_to_str(buffer, sizeof(buffer), mpol);
+   ret = mpol_to_str(buffer, sizeof(buffer), mpol);
+   if (ret  0)
+   return ret;
 
seq_printf(seq, ,mpol=%s, buffer);
+   return 0;
 }
 
 static struct mempolicy *shmem_get_sbmpol(struct shmem_sb_info *sbinfo)
@@ -951,8 +955,9 @@ static struct page *shmem_alloc_page(gfp_t gfp,
 }
 #else /* !CONFIG_NUMA */
 #ifdef CONFIG_TMPFS
-static inline void shmem_show_mpol(struct seq_file *seq, struct mempolicy 
*mpol)
+static inline int shmem_show_mpol(struct seq_file *seq, struct mempolicy *mpol)
 {
+   return 0;
 }
 #endif /* CONFIG_TMPFS */
 
@@ -2555,8 +2560,7 @@ static int shmem_show_options(struct seq_file *seq, 
struct dentry *root)
if (!gid_eq(sbinfo-gid, GLOBAL_ROOT_GID))
seq_printf(seq, ,gid=%u,
from_kgid_munged(init_user_ns, sbinfo-gid));
-   shmem_show_mpol(seq, sbinfo-mpol);
-   return 0;
+   return shmem_show_mpol(seq, sbinfo-mpol);
 }
 #endif /* CONFIG_TMPFS */
 
-- 
1.7.7.6
--
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/