diff mbox series

[2/3] hw/virtio: Remove NULL check in virtio_free_region_cache()

Message ID 20210826172658.2116840-3-philmd@redhat.com
State New
Headers show
Series hw/virtio: Minor housekeeping patches | expand

Commit Message

Philippe Mathieu-Daudé Aug. 26, 2021, 5:26 p.m. UTC
virtio_free_region_cache() is called within call_rcu(),
always with a non-NULL argument. Ensure new code keep it
that way by replacing the NULL check by an assertion.
Add a comment this function is called within call_rcu().

Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
 hw/virtio/virtio.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

Comments

Stefano Garzarella Sept. 1, 2021, 3:56 p.m. UTC | #1
On Thu, Aug 26, 2021 at 07:26:57PM +0200, Philippe Mathieu-Daudé wrote:
>virtio_free_region_cache() is called within call_rcu(),
>always with a non-NULL argument. Ensure new code keep it
>that way by replacing the NULL check by an assertion.
>Add a comment this function is called within call_rcu().
>
>Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
>---
> hw/virtio/virtio.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
>diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
>index a5214bca612..3a1f6c520cb 100644
>--- a/hw/virtio/virtio.c
>+++ b/hw/virtio/virtio.c
>@@ -133,12 +133,10 @@ struct VirtQueue
>     QLIST_ENTRY(VirtQueue) node;
> };
>
>+/* Called within call_rcu().  */
> static void virtio_free_region_cache(VRingMemoryRegionCaches *caches)
> {
>-    if (!caches) {
>-        return;
>-    }
>-
>+    assert(caches != NULL);
>     address_space_cache_destroy(&caches->desc);
>     address_space_cache_destroy(&caches->avail);
>     address_space_cache_destroy(&caches->used);
>-- 
>2.31.1
>
>

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Stefan Hajnoczi Sept. 2, 2021, 12:07 p.m. UTC | #2
On Thu, Aug 26, 2021 at 07:26:57PM +0200, Philippe Mathieu-Daudé wrote:
> virtio_free_region_cache() is called within call_rcu(),
> always with a non-NULL argument. Ensure new code keep it
> that way by replacing the NULL check by an assertion.
> Add a comment this function is called within call_rcu().
> 
> Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> ---
>  hw/virtio/virtio.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index a5214bca612..3a1f6c520cb 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -133,12 +133,10 @@ struct VirtQueue
>      QLIST_ENTRY(VirtQueue) node;
>  };
>  
> +/* Called within call_rcu().  */
>  static void virtio_free_region_cache(VRingMemoryRegionCaches *caches)
>  {
> -    if (!caches) {
> -        return;
> -    }
> -
> +    assert(caches != NULL);
>      address_space_cache_destroy(&caches->desc);
>      address_space_cache_destroy(&caches->avail);
>      address_space_cache_destroy(&caches->used);

Looks like an artifact that was left in when the code was originally
introduced in commit c611c76417f52b335ecaab01c61743e3b705eb7c ("virtio:
add MemoryListener to cache ring translations"). Paolo could confirm
this.

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
diff mbox series

Patch

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index a5214bca612..3a1f6c520cb 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -133,12 +133,10 @@  struct VirtQueue
     QLIST_ENTRY(VirtQueue) node;
 };
 
+/* Called within call_rcu().  */
 static void virtio_free_region_cache(VRingMemoryRegionCaches *caches)
 {
-    if (!caches) {
-        return;
-    }
-
+    assert(caches != NULL);
     address_space_cache_destroy(&caches->desc);
     address_space_cache_destroy(&caches->avail);
     address_space_cache_destroy(&caches->used);