Re: [PATCH] Staging: dgnc: Using temporary value for repeated dereferences.

Joe Perches
2015-04-20T00:54:24Z

On Sun, 2015-04-19 at 23:58 +0200, Yorick Rommers wrote:
> Hello Joe,
>
> Thank you once again for the feedback.
> I've changed my patch accordingly, see below.
>
> --------------------------------------
>
> A patch for a line being too long (>80) in dgnc_mgmt.c,
> fixed by making a temporary value for dgnc_Board[brd],
> replacing all instanced of dgnc_Board[brd] with temporary value,
> and removing unnecessary typecasts.
>
> Signed-off-by: Yorick Rommers <yorick-rommers@hotmail.com>
> ---
> drivers/staging/dgnc/dgnc_mgmt.c | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/staging/dgnc/dgnc_mgmt.c b/drivers/staging/dgnc/dgnc_mgmt.c
> index b13318a..0437117 100644
> --- a/drivers/staging/dgnc/dgnc_mgmt.c
> +++ b/drivers/staging/dgnc/dgnc_mgmt.c
> @@ -131,6 +131,7 @@ long dgnc_mgmt_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
> int brd;
>
> struct digi_info di;
> + struct dgnc_board *bd = dgnc_Board[brd];

Please read the code.
brd is got from userspace and you've dereferenced
it before getting the value from userspace.

> if (copy_from_user(&brd, uarg, sizeof(int)))
> return -EFAULT;

Look again at the code I suggested.