2021-06-22 11:40:17

by Neeraj Upadhyay

[permalink] [raw]
Subject: [PATCH] vringh: Use wiov->used to check for read/write desc order

As iov->used is incremented when descriptors are processed
in __vringh_iov(), use it to check for incorrect read
and write descriptor order.

Signed-off-by: Neeraj Upadhyay <[email protected]>
---
drivers/vhost/vringh.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
index 4af8fa2..14e2043 100644
--- a/drivers/vhost/vringh.c
+++ b/drivers/vhost/vringh.c
@@ -359,7 +359,7 @@ __vringh_iov(struct vringh *vrh, u16 i,
iov = wiov;
else {
iov = riov;
- if (unlikely(wiov && wiov->i)) {
+ if (unlikely(wiov && wiov->used)) {
vringh_bad("Readable desc %p after writable",
&descs[i]);
err = -EINVAL;
--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation


2021-06-23 03:24:54

by Jason Wang

[permalink] [raw]
Subject: Re: [PATCH] vringh: Use wiov->used to check for read/write desc order


?? 2021/6/22 ????7:37, Neeraj Upadhyay ะด??:
> As iov->used is incremented when descriptors are processed
> in __vringh_iov(), use it to check for incorrect read
> and write descriptor order.
>
> Signed-off-by: Neeraj Upadhyay <[email protected]>


Acked-by: Jason Wang <[email protected]>


> ---
> drivers/vhost/vringh.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
> index 4af8fa2..14e2043 100644
> --- a/drivers/vhost/vringh.c
> +++ b/drivers/vhost/vringh.c
> @@ -359,7 +359,7 @@ __vringh_iov(struct vringh *vrh, u16 i,
> iov = wiov;
> else {
> iov = riov;
> - if (unlikely(wiov && wiov->i)) {
> + if (unlikely(wiov && wiov->used)) {
> vringh_bad("Readable desc %p after writable",
> &descs[i]);
> err = -EINVAL;

2021-06-23 16:12:39

by Stefano Garzarella

[permalink] [raw]
Subject: Re: [PATCH] vringh: Use wiov->used to check for read/write desc order

On Tue, Jun 22, 2021 at 05:07:53PM +0530, Neeraj Upadhyay wrote:
>As iov->used is incremented when descriptors are processed
>in __vringh_iov(), use it to check for incorrect read
>and write descriptor order.
>
>Signed-off-by: Neeraj Upadhyay <[email protected]>
>---
> drivers/vhost/vringh.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Stefano Garzarella <[email protected]>

>
>diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
>index 4af8fa2..14e2043 100644
>--- a/drivers/vhost/vringh.c
>+++ b/drivers/vhost/vringh.c
>@@ -359,7 +359,7 @@ __vringh_iov(struct vringh *vrh, u16 i,
> iov = wiov;
> else {
> iov = riov;
>- if (unlikely(wiov && wiov->i)) {
>+ if (unlikely(wiov && wiov->used)) {
> vringh_bad("Readable desc %p after writable",
> &descs[i]);
> err = -EINVAL;
>--
>QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
>hosted by The Linux Foundation
>

2021-06-23 20:11:18

by Michael S. Tsirkin

[permalink] [raw]
Subject: Re: [PATCH] vringh: Use wiov->used to check for read/write desc order

On Tue, Jun 22, 2021 at 05:07:53PM +0530, Neeraj Upadhyay wrote:
> As iov->used is incremented when descriptors are processed
> in __vringh_iov(), use it to check for incorrect read
> and write descriptor order.

Could the commit log be clearer? why is wiov->i incorrect here?

> Signed-off-by: Neeraj Upadhyay <[email protected]>
> ---
> drivers/vhost/vringh.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/vhost/vringh.c b/drivers/vhost/vringh.c
> index 4af8fa2..14e2043 100644
> --- a/drivers/vhost/vringh.c
> +++ b/drivers/vhost/vringh.c
> @@ -359,7 +359,7 @@ __vringh_iov(struct vringh *vrh, u16 i,
> iov = wiov;
> else {
> iov = riov;
> - if (unlikely(wiov && wiov->i)) {
> + if (unlikely(wiov && wiov->used)) {
> vringh_bad("Readable desc %p after writable",
> &descs[i]);
> err = -EINVAL;
> --
> QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> hosted by The Linux Foundation