Re: [PATCH 186/190] Revert "virt: vbox: Only copy_from_user the request-header once"

Hans de Goede
2021-04-21T16:51:38Z

Hi Greg,

On 4/21/21 3:01 PM, Greg Kroah-Hartman wrote:
> This reverts commit bd23a7269834dc7c1f93e83535d16ebc44b75eba.
>
> Commits from @umn.edu addresses have been found to be submitted in "bad
> faith" to try to test the kernel community's ability to review "known
> malicious" changes. The result of these submissions can be found in a
> paper published at the 42nd IEEE Symposium on Security and Privacy
> entitled, "Open Source Insecurity: Stealthily Introducing
> Vulnerabilities via Hypocrite Commits" written by Qiushi Wu (University
> of Minnesota) and Kangjie Lu (University of Minnesota).
>
> Because of this, all submissions from this group must be reverted from
> the kernel tree and will need to be re-reviewed again to determine if
> they actually are a valid fix. Until that work is complete, remove this
> change to ensure that no problems are being introduced into the
> codebase.
>
> Cc: Wenwen Wang <wang6495@umn.edu>
> Cc: Hans de Goede <hdegoede@redhat.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Ugh what a mess (the whole umn.edu thing).

I still remember reviewing this patch during its original submission
and I've reviewed it again this morning when you just send it out.

And now after letting it sit for a bit I've reviewed it a third time
and it seems to do what it says on the label / in the original commit
msg; and if fixes a real, potentially security, issue.

I'm not sure what the process is for "good" patches in the set
which you are reverting. I would prefer for this patch to be dropped
from the set of reveert. But I can also submit a revert of the revert(?)
once this set of reverts has been merged.

Regards,

Hans

> ---
> drivers/virt/vboxguest/vboxguest_linux.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/virt/vboxguest/vboxguest_linux.c b/drivers/virt/vboxguest/vboxguest_linux.c
> index 73eb34849eab..f5cd9cfa1ef6 100644
> --- a/drivers/virt/vboxguest/vboxguest_linux.c
> +++ b/drivers/virt/vboxguest/vboxguest_linux.c
> @@ -142,9 +142,7 @@ static long vbg_misc_device_ioctl(struct file *filp, unsigned int req,
> if (!buf)
> return -ENOMEM;
>
> - *((struct vbg_ioctl_hdr *)buf) = hdr;
> - if (copy_from_user(buf + sizeof(hdr), (void *)arg + sizeof(hdr),
> - hdr.size_in - sizeof(hdr))) {
> + if (copy_from_user(buf, (void *)arg, hdr.size_in)) {
> ret = -EFAULT;
> goto out;
> }
>