> @@ -775,13 +775,11 @@ int con_get_unimap(struct vc_data *vc, ushort ct, 
> ushort __user *uct, struct uni
>               }
>       }
>       console_unlock();
> -     for (i = min(ect, ct), plist = unilist; i; i--, list++, plist++) {
> -             __put_user(plist->unicode, &list->unicode);
> -             __put_user(plist->fontpos, &list->fontpos);
> -     }
> -     __put_user(ect, uct);
> +     if (copy_to_user(list, unilist, min(ect, ct) * sizeof(struct unipair)))
> +             ret = -EFAULT;
> +     put_user(ect, uct);
>       kfree(unilist);
> -     return ((ect <= ct) ? 0 : -ENOMEM);
> +     return ret ? ret : (ect <= ct) ? 0 : -ENOMEM;
>  }


The rest looks good but that line needs taking out and shooting.

Alan

Reply via email to