| From 2991397d23ec597405b116d96de3813420bdcbc3 Mon Sep 17 00:00:00 2001 |
| From: Jan Beulich <jbeulich@suse.com> |
| Date: Thu, 25 Feb 2021 16:35:15 +0100 |
| Subject: xen-netback: respect gnttab_map_refs()'s return value |
| |
| From: Jan Beulich <jbeulich@suse.com> |
| |
| commit 2991397d23ec597405b116d96de3813420bdcbc3 upstream. |
| |
| Commit 3194a1746e8a ("xen-netback: don't "handle" error by BUG()") |
| dropped respective a BUG_ON() without noticing that with this the |
| variable's value wouldn't be consumed anymore. With gnttab_set_map_op() |
| setting all status fields to a non-zero value, in case of an error no |
| slot should have a status of GNTST_okay (zero). |
| |
| This is part of XSA-367. |
| |
| Cc: <stable@vger.kernel.org> |
| Reported-by: kernel test robot <lkp@intel.com> |
| Signed-off-by: Jan Beulich <jbeulich@suse.com> |
| Reviewed-by: Juergen Gross <jgross@suse.com> |
| Link: https://lore.kernel.org/r/d933f495-619a-0086-5fb4-1ec3cf81a8fc@suse.com |
| Signed-off-by: Juergen Gross <jgross@suse.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/xen-netback/netback.c | 12 +++++++++++- |
| 1 file changed, 11 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/xen-netback/netback.c |
| +++ b/drivers/net/xen-netback/netback.c |
| @@ -1342,11 +1342,21 @@ int xenvif_tx_action(struct xenvif_queue |
| return 0; |
| |
| gnttab_batch_copy(queue->tx_copy_ops, nr_cops); |
| - if (nr_mops != 0) |
| + if (nr_mops != 0) { |
| ret = gnttab_map_refs(queue->tx_map_ops, |
| NULL, |
| queue->pages_to_map, |
| nr_mops); |
| + if (ret) { |
| + unsigned int i; |
| + |
| + netdev_err(queue->vif->dev, "Map fail: nr %u ret %d\n", |
| + nr_mops, ret); |
| + for (i = 0; i < nr_mops; ++i) |
| + WARN_ON_ONCE(queue->tx_map_ops[i].status == |
| + GNTST_okay); |
| + } |
| + } |
| |
| work_done = xenvif_tx_submit(queue); |
| |