Re: [PATCH] xen: fix: use WARN_ON instead of if condition followed by BUG.

2020-12-30 Thread Roger Pau Monné
On Wed, Dec 30, 2020 at 02:38:06PM +0800, YANG LI wrote:
> Use WARN_ON instead of if condition followed by BUG in
> gnttab_batch_map() and gnttab_batch_copy().

But those are not equivalent as far as I'm aware. BUG will stop
execution, while WARN_ON will print a splat and continue executing.

If switching to WARN_ON is indeed fine it needs to be explained in the
commit message that returning to the caller(s) with
HYPERVISOR_grant_table_op having returned an error code is fine, and
that it's not going to create other issues, like memory corruption or
leaks.

Thanks, Roger.


[PATCH] xen: fix: use WARN_ON instead of if condition followed by BUG.

2020-12-29 Thread YANG LI
Use WARN_ON instead of if condition followed by BUG in
gnttab_batch_map() and gnttab_batch_copy().

This issue was detected with the help of coccicheck.

Signed-off-by: YANG LI 
Reported-by: Abaci 
---
 drivers/xen/grant-table.c | 8 
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index 3729bea..db1770c 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -1080,8 +1080,8 @@ void gnttab_batch_map(struct gnttab_map_grant_ref *batch, 
unsigned count)
 {
struct gnttab_map_grant_ref *op;
 
-   if (HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, batch, count))
-   BUG();
+   WARN_ON(HYPERVISOR_grant_table_op(GNTTABOP_map_grant_ref, batch, 
count));
+
for (op = batch; op < batch + count; op++)
if (op->status == GNTST_eagain)
gnttab_retry_eagain_gop(GNTTABOP_map_grant_ref, op,
@@ -1093,8 +1093,8 @@ void gnttab_batch_copy(struct gnttab_copy *batch, 
unsigned count)
 {
struct gnttab_copy *op;
 
-   if (HYPERVISOR_grant_table_op(GNTTABOP_copy, batch, count))
-   BUG();
+   WARN_ON(HYPERVISOR_grant_table_op(GNTTABOP_copy, batch, count));
+
for (op = batch; op < batch + count; op++)
if (op->status == GNTST_eagain)
gnttab_retry_eagain_gop(GNTTABOP_copy, op,
-- 
1.8.3.1