Colin King
2019-Feb-19 13:57 UTC
[PATCH][next] vhost: only return early if ret indicates an error or no iovecs have been processed
From: Colin Ian King <colin.king at canonical.com> Currently the loop that calls log_write_hva on each iovec is never executed because of an incorrect error check on the return from the call to translate_desc. The check should be checking for a -ve error return and because it makes no sense to iterate over zero items, the checks should also check for zero too. Detected by CoverityScan, CID#1476969 ("Logically dead code") Fixes: cc5e71075947 ("vhost: log dirty page correctly") Signed-off-by: Colin Ian King <colin.king at canonical.com> --- drivers/vhost/vhost.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c index 24a129fcdd61..a9a1709a859a 100644 --- a/drivers/vhost/vhost.c +++ b/drivers/vhost/vhost.c @@ -1788,7 +1788,7 @@ static int log_used(struct vhost_virtqueue *vq, u64 used_offset, u64 len) ret = translate_desc(vq, (uintptr_t)vq->used + used_offset, len, iov, 64, VHOST_ACCESS_WO); - if (ret) + if (ret <= 0) return ret; for (i = 0; i < ret; i++) { -- 2.20.1
Michael S. Tsirkin
2019-Feb-19 16:35 UTC
[PATCH][next] vhost: only return early if ret indicates an error or no iovecs have been processed
On Tue, Feb 19, 2019 at 01:57:13PM +0000, Colin King wrote:> From: Colin Ian King <colin.king at canonical.com> > > Currently the loop that calls log_write_hva on each iovec is never > executed because of an incorrect error check on the return from the > call to translate_desc. The check should be checking for a -ve error > return and because it makes no sense to iterate over zero items, the > checks should also check for zero too. > > Detected by CoverityScan, CID#1476969 ("Logically dead code") > > Fixes: cc5e71075947 ("vhost: log dirty page correctly") > Signed-off-by: Colin Ian King <colin.king at canonical.com>Jason posted a similar patch recently. Are you happy with that one?> --- > drivers/vhost/vhost.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c > index 24a129fcdd61..a9a1709a859a 100644 > --- a/drivers/vhost/vhost.c > +++ b/drivers/vhost/vhost.c > @@ -1788,7 +1788,7 @@ static int log_used(struct vhost_virtqueue *vq, u64 used_offset, u64 len) > > ret = translate_desc(vq, (uintptr_t)vq->used + used_offset, > len, iov, 64, VHOST_ACCESS_WO); > - if (ret) > + if (ret <= 0) > return ret; > > for (i = 0; i < ret; i++) { > -- > 2.20.1
Colin Ian King
2019-Feb-19 16:40 UTC
[PATCH][next] vhost: only return early if ret indicates an error or no iovecs have been processed
On 19/02/2019 16:35, Michael S. Tsirkin wrote:> On Tue, Feb 19, 2019 at 01:57:13PM +0000, Colin King wrote: >> From: Colin Ian King <colin.king at canonical.com> >> >> Currently the loop that calls log_write_hva on each iovec is never >> executed because of an incorrect error check on the return from the >> call to translate_desc. The check should be checking for a -ve error >> return and because it makes no sense to iterate over zero items, the >> checks should also check for zero too. >> >> Detected by CoverityScan, CID#1476969 ("Logically dead code") >> >> Fixes: cc5e71075947 ("vhost: log dirty page correctly") >> Signed-off-by: Colin Ian King <colin.king at canonical.com> > > Jason posted a similar patch recently. > > Are you happy with that one?Sure, ignore mine, I was late to the party.> >> --- >> drivers/vhost/vhost.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c >> index 24a129fcdd61..a9a1709a859a 100644 >> --- a/drivers/vhost/vhost.c >> +++ b/drivers/vhost/vhost.c >> @@ -1788,7 +1788,7 @@ static int log_used(struct vhost_virtqueue *vq, u64 used_offset, u64 len) >> >> ret = translate_desc(vq, (uintptr_t)vq->used + used_offset, >> len, iov, 64, VHOST_ACCESS_WO); >> - if (ret) >> + if (ret <= 0) >> return ret; >> >> for (i = 0; i < ret; i++) { >> -- >> 2.20.1
Possibly Parallel Threads
- [PATCH][next] vhost: only return early if ret indicates an error or no iovecs have been processed
- [PATCH][next] vhost: only return early if ret indicates an error or no iovecs have been processed
- [PATCH net] vhost: correctly check the return value of translate_desc() in log_used()
- [PATCH net] vhost: correctly check the return value of translate_desc() in log_used()
- [PATCH net V2] vhost: correctly check the return value of translate_desc() in log_used()