On Sun, 03 Feb 2013 21:13:36 +0800
Zhang Yanfei <zhangyanfei....@gmail.com> wrote:

> From: Zhang Yanfei <zhangyan...@cn.fujitsu.com>
> 
> In function read_vmcore, two if tests are duplicate. Change the position
> of them could reduce the duplication. This change does not affect
> the behaviour of the function.
> 

hm, yes.

> --- a/fs/proc/vmcore.c
> +++ b/fs/proc/vmcore.c
> @@ -175,15 +175,16 @@ static ssize_t read_vmcore(struct file *file, char 
> __user *buffer,
>       start = map_offset_to_paddr(*fpos, &vmcore_list, &curr_m);
>       if (!curr_m)
>               return -EINVAL;
> -     if ((tsz = (PAGE_SIZE - (start & ~PAGE_MASK))) > buflen)
> -             tsz = buflen;
> -
> -     /* Calculate left bytes in current memory segment. */
> -     nr_bytes = (curr_m->size - (start - curr_m->paddr));
> -     if (tsz > nr_bytes)
> -             tsz = nr_bytes;
>  
>       while (buflen) {
> +             if ((tsz = (PAGE_SIZE - (start & ~PAGE_MASK))) > buflen)
> +                     tsz = buflen;
> +
> +             /* Calculate left bytes in current memory segment. */
> +             nr_bytes = (curr_m->size - (start - curr_m->paddr));
> +             if (tsz > nr_bytes)
> +                     tsz = nr_bytes;
> +
>               tmp = read_from_oldmem(buffer, tsz, &start, 1);
>               if (tmp < 0)
>                       return tmp;
> @@ -198,12 +199,6 @@ static ssize_t read_vmcore(struct file *file, char 
> __user *buffer,
>                                               struct vmcore, list);
>                       start = curr_m->paddr;

`start' gets changed here

>               }
> -             if ((tsz = (PAGE_SIZE - (start & ~PAGE_MASK))) > buflen)
> -                     tsz = buflen;
> -             /* Calculate left bytes in current memory segment. */
> -             nr_bytes = (curr_m->size - (start - curr_m->paddr));
> -             if (tsz > nr_bytes)
> -                     tsz = nr_bytes;

So this code can calcualte a different value of `tsz'.  But that won't
get used.  Looks right to me.

>       }
>       return acc;
>  }

While we're there, let's squish that assignment-in-a-if pestilence and
use max_t().

--- 
a/fs/proc/vmcore.c~fs-proc-vmcorec-put-if-tests-in-the-top-of-the-while-loop-to-reduce-duplication-fix
+++ a/fs/proc/vmcore.c
@@ -178,8 +178,7 @@ static ssize_t read_vmcore(struct file *
                return -EINVAL;
 
        while (buflen) {
-               if ((tsz = (PAGE_SIZE - (start & ~PAGE_MASK))) > buflen)
-                       tsz = buflen;
+               tsz = max_t(size_t, buflen, PAGE_SIZE - (start & ~PAGE_MASK));
 
                /* Calculate left bytes in current memory segment. */
                nr_bytes = (curr_m->size - (start - curr_m->paddr));
_

--
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/

Reply via email to