From: "Michael Kelley (LINUX)" <mikelley@microsoft.com>
To: Andrea Parri <parri.andrea@gmail.com>
Cc: KY Srinivasan <kys@microsoft.com>,
Haiyang Zhang <haiyangz@microsoft.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
Wei Liu <wei.liu@kernel.org>, Dexuan Cui <decui@microsoft.com>,
Stefano Garzarella <sgarzare@redhat.com>,
David Miller <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC PATCH 6/6] Drivers: hv: vmbus: Refactor the ring-buffer iterator functions
Date: Fri, 15 Apr 2022 16:44:50 +0000 [thread overview]
Message-ID: <PH0PR21MB3025ECBC7D7102B539A7705AD7EE9@PH0PR21MB3025.namprd21.prod.outlook.com> (raw)
In-Reply-To: <20220415162811.GA47513@anparri>
From: Andrea Parri <parri.andrea@gmail.com> Sent: Friday, April 15, 2022 9:28 AM
>
> On Fri, Apr 15, 2022 at 09:00:31AM +0200, Andrea Parri wrote:
> > > > @@ -470,7 +471,6 @@ struct vmpacket_descriptor *hv_pkt_iter_first_raw(struct
> > > > vmbus_channel *channel)
> > > >
> > > > return (struct vmpacket_descriptor *)(hv_get_ring_buffer(rbi) + rbi-
> > > > >priv_read_index);
> > > > }
> > > > -EXPORT_SYMBOL_GPL(hv_pkt_iter_first_raw);
> > >
> > > Does hv_pkt_iter_first_raw() need to be retained at all as a
> > > separate function? I think after these changes, the only caller
> > > is hv_pkt_iter_first(), in which case the code could just go
> > > inline in hv_pkt_iter_first(). Doing that combining would
> > > also allow the elimination of the duplicate call to
> > > hv_pkt_iter_avail().
>
> Back to this, can you clarify what you mean by "the elimination of..."?
> After moving the function "inline", hv_pkt_iter_avail() would be called
> in to check for a non-NULL descriptor (in the inline function) and later
> in the computation of bytes_avail.
I was thinking something like this:
bytes_avail = hv_pkt_iter_avail(rbi);
if (bytes_avail < sizeof(struct vmpacket_descriptor))
return NULL;
bytes_avail = min(rbi->pkt_buffer_size, bytes_avail);
desc = (struct vmpacket_descriptor *)(hv_get_ring_buffer(rbi) + rbi->priv_read_index);
And for that matter, hv_pkt_iter_avail() is now only called in one place.
It's a judgment call whether to keep it as a separate helper function vs.
inlining it in hv_pkt_iter_first() as well. I'm OK either way.
Michael
WARNING: multiple messages have this Message-ID
From: "Michael Kelley \(LINUX\) via Virtualization" <virtualization@lists.linux-foundation.org>
To: Andrea Parri <parri.andrea@gmail.com>
Cc: Wei Liu <wei.liu@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
Stephen Hemminger <sthemmin@microsoft.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
Haiyang Zhang <haiyangz@microsoft.com>,
Dexuan Cui <decui@microsoft.com>,
"linux-hyperv@vger.kernel.org" <linux-hyperv@vger.kernel.org>,
"virtualization@lists.linux-foundation.org"
<virtualization@lists.linux-foundation.org>,
Jakub Kicinski <kuba@kernel.org>,
David Miller <davem@davemloft.net>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC PATCH 6/6] Drivers: hv: vmbus: Refactor the ring-buffer iterator functions
Date: Fri, 15 Apr 2022 16:44:50 +0000 [thread overview]
Message-ID: <PH0PR21MB3025ECBC7D7102B539A7705AD7EE9@PH0PR21MB3025.namprd21.prod.outlook.com> (raw)
In-Reply-To: <20220415162811.GA47513@anparri>
From: Andrea Parri <parri.andrea@gmail.com> Sent: Friday, April 15, 2022 9:28 AM
>
> On Fri, Apr 15, 2022 at 09:00:31AM +0200, Andrea Parri wrote:
> > > > @@ -470,7 +471,6 @@ struct vmpacket_descriptor *hv_pkt_iter_first_raw(struct
> > > > vmbus_channel *channel)
> > > >
> > > > return (struct vmpacket_descriptor *)(hv_get_ring_buffer(rbi) + rbi-
> > > > >priv_read_index);
> > > > }
> > > > -EXPORT_SYMBOL_GPL(hv_pkt_iter_first_raw);
> > >
> > > Does hv_pkt_iter_first_raw() need to be retained at all as a
> > > separate function? I think after these changes, the only caller
> > > is hv_pkt_iter_first(), in which case the code could just go
> > > inline in hv_pkt_iter_first(). Doing that combining would
> > > also allow the elimination of the duplicate call to
> > > hv_pkt_iter_avail().
>
> Back to this, can you clarify what you mean by "the elimination of..."?
> After moving the function "inline", hv_pkt_iter_avail() would be called
> in to check for a non-NULL descriptor (in the inline function) and later
> in the computation of bytes_avail.
I was thinking something like this:
bytes_avail = hv_pkt_iter_avail(rbi);
if (bytes_avail < sizeof(struct vmpacket_descriptor))
return NULL;
bytes_avail = min(rbi->pkt_buffer_size, bytes_avail);
desc = (struct vmpacket_descriptor *)(hv_get_ring_buffer(rbi) + rbi->priv_read_index);
And for that matter, hv_pkt_iter_avail() is now only called in one place.
It's a judgment call whether to keep it as a separate helper function vs.
inlining it in hv_pkt_iter_first() as well. I'm OK either way.
Michael
_______________________________________________
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/virtualization
next prev parent reply other threads:[~2022-04-15 16:45 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-13 20:47 [RFC PATCH 0/6] hv_sock: Hardening changes Andrea Parri (Microsoft)
2022-04-13 20:47 ` [RFC PATCH 1/6] hv_sock: Check hv_pkt_iter_first_raw()'s return value Andrea Parri (Microsoft)
2022-04-15 3:33 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 3:33 ` Michael Kelley (LINUX)
2022-04-15 6:41 ` Andrea Parri
2022-04-15 14:27 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 14:27 ` Michael Kelley (LINUX)
2022-04-15 16:09 ` Andrea Parri
2022-04-13 20:47 ` [RFC PATCH 2/6] hv_sock: Copy packets sent by Hyper-V out of the ring buffer Andrea Parri (Microsoft)
2022-04-15 3:33 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 3:33 ` Michael Kelley (LINUX)
2022-04-15 6:42 ` Andrea Parri
2022-04-13 20:47 ` [RFC PATCH 3/6] hv_sock: Add validation for untrusted Hyper-V values Andrea Parri (Microsoft)
2022-04-13 20:47 ` [RFC PATCH 4/6] hv_sock: Initialize send_buf in hvs_stream_enqueue() Andrea Parri (Microsoft)
2022-04-15 3:33 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 3:33 ` Michael Kelley (LINUX)
2022-04-15 6:50 ` Andrea Parri
2022-04-15 14:30 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 14:30 ` Michael Kelley (LINUX)
2022-04-15 16:16 ` Andrea Parri
2022-04-13 20:47 ` [RFC PATCH 5/6] Drivers: hv: vmbus: Accept hv_sock offers in isolated guests Andrea Parri (Microsoft)
2022-04-15 3:33 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 3:33 ` Michael Kelley (LINUX)
2022-04-15 6:58 ` Andrea Parri
2022-04-13 20:47 ` [RFC PATCH 6/6] Drivers: hv: vmbus: Refactor the ring-buffer iterator functions Andrea Parri (Microsoft)
2022-04-15 3:34 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 3:34 ` Michael Kelley (LINUX)
2022-04-15 7:00 ` Andrea Parri
2022-04-15 16:28 ` Andrea Parri
2022-04-15 16:44 ` Michael Kelley (LINUX) [this message]
2022-04-15 16:44 ` Michael Kelley (LINUX) via Virtualization
2022-04-15 17:05 ` Andrea Parri
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=PH0PR21MB3025ECBC7D7102B539A7705AD7EE9@PH0PR21MB3025.namprd21.prod.outlook.com \
--to=mikelley@microsoft.com \
--cc=davem@davemloft.net \
--cc=decui@microsoft.com \
--cc=haiyangz@microsoft.com \
--cc=kuba@kernel.org \
--cc=kys@microsoft.com \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=parri.andrea@gmail.com \
--cc=sgarzare@redhat.com \
--cc=sthemmin@microsoft.com \
--cc=virtualization@lists.linux-foundation.org \
--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.