summaryrefslogtreecommitdiff
path: root/infra
diff options
context:
space:
mode:
authorLu Qiuwen <[email protected]>2023-10-30 18:50:01 +0800
committerLu Qiuwen <[email protected]>2023-10-30 18:50:01 +0800
commitc49cdd6dcab6572287efbdb1f97e4d33b2012ca6 (patch)
treef8b986868f9df47d44d7e0edb648b513bc1b56f3 /infra
parenta2cb9faeaf0089f37d91a33af15d4476ee34d034 (diff)
bugfix: fix the crash problem when the app opens a tx only virtual device.v4.6.59-20231030
Diffstat (limited to 'infra')
-rw-r--r--infra/src/vnode_common.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/infra/src/vnode_common.c b/infra/src/vnode_common.c
index 66c7f5d..1c8abce 100644
--- a/infra/src/vnode_common.c
+++ b/infra/src/vnode_common.c
@@ -438,7 +438,13 @@ struct vnode_prod_stat * __vnode_common_prod_stat_get(struct vnode_prod * prod)
for (unsigned int consq = 0; consq < cons->nr_consq; consq++)
{
- struct tunnel_desc * tunnel_desc = *tunnel_block_locate(prod->block, prodq, consq);
+ struct tunnel_block * block = ACCESS_ONCE(prod->block);
+ if (block == NULL)
+ {
+ return prod_stat;
+ }
+
+ struct tunnel_desc * tunnel_desc = *tunnel_block_locate(block, prodq, consq);
assert(tunnel_desc != NULL);
prod_on_line += tunnel_desc->on_line;
@@ -477,7 +483,13 @@ struct vnode_cons_stat * __vnode_common_cons_stat_get(struct vnode_cons * cons)
for(unsigned int prodq = 0; prodq < prod->nr_prodq; prodq++)
{
- struct tunnel_desc * tunnel_desc = *tunnel_block_locate(prod->block, prodq, consq);
+ struct tunnel_block * block = ACCESS_ONCE(cons->block);
+ if(block == NULL)
+ {
+ return cons_stat;
+ }
+
+ struct tunnel_desc * tunnel_desc = *tunnel_block_locate(block, prodq, consq);
assert(tunnel_desc != NULL);
consq_on_line += tunnel_desc->on_line;