All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Hans de Goede <hdegoede@redhat.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Michael Thayer <michael.thayer@oracle.com>,
	"Knut St . Osmundsen" <knut.osmundsen@oracle.com>,
	Larry Finger <Larry.Finger@lwfinger.net>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] virt: Add vboxguest driver for Virtual Box Guest integration
Date: Tue, 3 Oct 2017 03:04:49 -0700	[thread overview]
Message-ID: <20171003100449.GA5491@infradead.org> (raw)
In-Reply-To: <20171003092115.11341-2-hdegoede@redhat.com>

Looks like you forgot to CC previous revierers.

> +#define CHECK_IOCTL_IN(req)						     \
> +do {									     \
> +	if ((req)->Hdr.cbIn != (sizeof((req)->Hdr) + sizeof((req)->u.In)) || \
> +	    (req)->Hdr.cbOut != sizeof((req)->Hdr))			     \
> +		return -EINVAL;						     \
> +} while (0)

It seems like you ignored the comments on the last version.

Get rid of the weird struct capilization.

Make these things functions instead of macros.

> +	VMMDevReqHypervisorInfo *req;
> +	void *guest_mappings[GUEST_MAPPINGS_TRIES];

Fix your structure names.

> +	for (i = 0; i < (size >> PAGE_SHIFT); i++)

Remove pointless inner braces.

> +#ifdef CONFIG_X86_64
> +	req1->guestInfo.osType = VBOXOSTYPE_Linux26_x64;
> +#else
> +	req1->guestInfo.osType = VBOXOSTYPE_Linux26;
> +#endif

Hardcoding architecvtures is almost always a bug.  If you think it
isn't here it needs a big fat comment explaining that rationale.

> +	req->guestStatus.status = active ? VBoxGuestFacilityStatus_Active :
> +					   VBoxGuestFacilityStatus_Inactive;

Please use if/else for readability.

> +/** @name Memory Ballooning
> + * @{
> + */

Please get rid of this whacky comment style.

> +
> +/**
> + * Inflate the balloon by one chunk.
> + *
> + * The caller owns the balloon mutex.
> + *
> + * @returns 0 or negative errno value.
> + * @param   gdev	The Guest extension device.
> + * @param   chunk_idx	Index of the chunk.
> + */

An this one isn't proper kerneldoc either.

> +	pages = kmalloc(sizeof(*pages) * VMMDEV_MEMORY_BALLOON_CHUNK_PAGES,

> +/**
> + * Callback for heartbeat timer.
> + */

/**

as the comment start is reserved for kerneldoc comments, this one
isn't a kerneldoc comment, so please remove it.

> +static void vbg_heartbeat_timer(unsigned long data)
> +{
> +	struct vbg_dev *gdev = (struct vbg_dev *)data;
> +
> +	vbg_req_perform(gdev, gdev->guest_heartbeat_req);
> +	mod_timer(&gdev->heartbeat_timer,
> +		  msecs_to_jiffies(gdev->heartbeat_interval_ms));
> +}

Please use timer_setup and from_timer instead of the data argument.
(this is new in -rc3).

> +	list_add(&session->list_node, &gdev->session_list);
> +	spin_unlock_irqrestore(&gdev->session_spinlock, flags);

Session_list isn't used anywhere.  And if it was it would probably
buggy due to the lack of reference counting.

> +
> +	*session_ret = session;
> +
> +	return 0;

Just return the session or an ERR_PTR.

> +		guest_status = (const VMMDevReportGuestStatus *)req;

struct pointer asts are a ba idea - this probably should use
container_of magic or a more generic strucure with unioned elements.

> +int vbg_status_code_to_errno(int rc)
> +{
> +	if (rc >= 0)
> +		return 0;
> +
> +	switch (rc) {
> +	case VERR_ACCESS_DENIED:                    return -EPERM;

Please never put code in the same line as the switch statement.

Also in general code like this is better done by looping over a lookup
table.

Anyway, this was a super shallow review that everyone could do.

The actual ioctls and pv hardware interfaces look even worse, but
such a messy giant blob they aren't reviewable.  This patch needs
a major cleanup pass first, and then a split into reviewable chunks.

  reply	other threads:[~2017-10-03 10:04 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-10-03  9:21 [PATCH 0/1] virt: Add vboxguest driver for Virtual Box Guest integration Hans de Goede
2017-10-03  9:21 ` [PATCH] " Hans de Goede
2017-10-03 10:04   ` Christoph Hellwig [this message]
2017-10-03 11:41     ` Hans de Goede
2017-10-03 12:40       ` Greg Kroah-Hartman
2017-10-04  9:32         ` Hans de Goede
2017-10-04  9:32       ` Hans de Goede
2017-10-04 10:11         ` Greg Kroah-Hartman
2017-10-04 10:23           ` Arnd Bergmann
2017-10-04 10:30             ` Greg Kroah-Hartman
2017-10-04 10:40               ` Hans de Goede
2017-10-04 14:34                 ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20171003100449.GA5491@infradead.org \
    --to=hch@infradead.org \
    --cc=Larry.Finger@lwfinger.net \
    --cc=arnd@arndb.de \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=knut.osmundsen@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=michael.thayer@oracle.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.