From: Andrea Parri <parri.andrea@gmail.com>
To: Michael Kelley <mikelley@microsoft.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
KY Srinivasan <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Wei Liu <wei.liu@kernel.org>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
Andres Beltran <lkmlabelt@gmail.com>,
Saruhan Karademir <skarade@microsoft.com>,
Juan Vazquez <juvazq@microsoft.com>
Subject: Re: [PATCH v7 1/3] Drivers: hv: vmbus: Add vmbus_requestor data structure for VMBus hardening
Date: Tue, 8 Sep 2020 09:54:05 +0200 [thread overview]
Message-ID: <20200908075216.GA5638@andrea> (raw)
In-Reply-To: <MW2PR2101MB1052338B4D3B7020A2191EB7D7280@MW2PR2101MB1052.namprd21.prod.outlook.com>
> > @@ -300,6 +303,22 @@ int hv_ringbuffer_write(struct vmbus_channel *channel,
> > kv_list[i].iov_len);
> > }
> >
> > + /*
> > + * Allocate the request ID after the data has been copied into the
> > + * ring buffer. Once this request ID is allocated, the completion
> > + * path could find the data and free it.
> > + */
> > +
> > + if (desc->flags == VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED) {
> > + rqst_id = vmbus_next_request_id(&channel->requestor, requestid);
> > + if (rqst_id == VMBUS_RQST_ERROR) {
> > + pr_err("No request id available\n");
> > + return -EAGAIN;
> > + }
> > + }
> > + desc = hv_get_ring_buffer(outring_info) + old_write;
> > + desc->trans_id = (rqst_id == VMBUS_NO_RQSTOR) ? requestid : rqst_id;
> > +
>
> This is a nit, but the above would be clearer to me if written like this:
>
> flags = desc->flags;
> if (flags == VMBUS_DATA_PACKET_FLAG_COMPLETION_REQUESTED) {
> rqst_id = vmbus_next_request_id(&channel->requestor, requestid);
> if (rqst_id == VMBUS_RQST_ERROR) {
> pr_err("No request id available\n");
> return -EAGAIN;
> }
> } else {
> rqst_id = requestid;
> }
> desc = hv_get_ring_buffer(outring_info) + old_write;
> desc->trans_id = rqst_id;
>
> The value of the flags field controls what will be used as the value for the
> rqst_id. Having another test to see which value will be used as the trans_id
> somehow feels a bit redundant. And then rqst_id doesn't have to be initialized.
Agreed, will apply in the next version.
>
> > /* Set previous packet start */
> > prev_indices = hv_get_ring_bufferindices(outring_info);
> >
> > @@ -319,8 +338,13 @@ int hv_ringbuffer_write(struct vmbus_channel *channel,
> >
> > hv_signal_on_write(old_write, channel);
> >
> > - if (channel->rescind)
> > + if (channel->rescind) {
> > + if (rqst_id != VMBUS_NO_RQSTOR) {
>
> Of course, with my proposed change, the above test would also have to be for
> the value of the flags field, which actually makes the code a bit more consistent.
Yes, indeed. Thank you for the review and the suggestion.
Andrea
next prev parent reply other threads:[~2020-09-08 7:54 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-07 16:19 [PATCH v7 0/3] Drivers: hv: vmbus: vmbus_requestor data structure for VMBus hardening Andrea Parri (Microsoft)
2020-09-07 16:19 ` [PATCH v7 1/3] Drivers: hv: vmbus: Add " Andrea Parri (Microsoft)
2020-09-07 22:01 ` Michael Kelley
2020-09-08 7:54 ` Andrea Parri [this message]
2020-09-14 17:29 ` Michael Kelley
2020-09-15 7:53 ` Andrea Parri
2020-09-15 19:22 ` Michael Kelley
2020-09-07 16:19 ` [PATCH v7 2/3] scsi: storvsc: Use vmbus_requestor to generate transaction IDs " Andrea Parri (Microsoft)
2020-09-07 22:02 ` Michael Kelley
2020-09-07 16:19 ` [PATCH v7 3/3] hv_netvsc: " Andrea Parri (Microsoft)
2020-09-07 22:02 ` Michael Kelley
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=20200908075216.GA5638@andrea \
--to=parri.andrea@gmail.com \
--cc=haiyangz@microsoft.com \
--cc=juvazq@microsoft.com \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkmlabelt@gmail.com \
--cc=mikelley@microsoft.com \
--cc=skarade@microsoft.com \
--cc=sthemmin@microsoft.com \
--cc=wei.liu@kernel.org \
/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.