diff mbox

[v3,3/3] memory: fix off-by-one error in memory_region_notify_one()

Message ID 20171010094247.10173-4-maxime.coquelin@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Maxime Coquelin Oct. 10, 2017, 9:42 a.m. UTC
This patch fixes an off-by-one error that could lead to the
notifyee to receive notifications for ranges it is not
registered to.

The bug has been spotted by code review.

Fixes: bd2bfa4c52e5 ("memory: introduce memory_region_notify_one()")
Cc: qemu-stable@nongnu.org
Cc: Peter Xu <peterx@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
 memory.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Peter Xu Oct. 10, 2017, 10:13 a.m. UTC | #1
On Tue, Oct 10, 2017 at 11:42:47AM +0200, Maxime Coquelin wrote:
> This patch fixes an off-by-one error that could lead to the
> notifyee to receive notifications for ranges it is not
> registered to.
> 
> The bug has been spotted by code review.
> 
> Fixes: bd2bfa4c52e5 ("memory: introduce memory_region_notify_one()")
> Cc: qemu-stable@nongnu.org
> Cc: Peter Xu <peterx@redhat.com>
> Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>

Thanks for fixing it!

Reviewed-by: Peter Xu <peterx@redhat.com>

> ---
>  memory.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/memory.c b/memory.c
> index 5e6351a6c1..b637c12bad 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -1892,7 +1892,7 @@ void memory_region_notify_one(IOMMUNotifier *notifier,
>       * Skip the notification if the notification does not overlap
>       * with registered range.
>       */
> -    if (notifier->start > entry->iova + entry->addr_mask + 1 ||
> +    if (notifier->start > entry->iova + entry->addr_mask ||
>          notifier->end < entry->iova) {
>          return;
>      }
> -- 
> 2.13.6
>
diff mbox

Patch

diff --git a/memory.c b/memory.c
index 5e6351a6c1..b637c12bad 100644
--- a/memory.c
+++ b/memory.c
@@ -1892,7 +1892,7 @@  void memory_region_notify_one(IOMMUNotifier *notifier,
      * Skip the notification if the notification does not overlap
      * with registered range.
      */
-    if (notifier->start > entry->iova + entry->addr_mask + 1 ||
+    if (notifier->start > entry->iova + entry->addr_mask ||
         notifier->end < entry->iova) {
         return;
     }