The 04/09/2021 09:01, Jakub Kicinski wrote: > On Fri, 9 Apr 2021 06:25:56 +0000 Jianbo Liu wrote: > > The 04/08/2021 14:16, Jakub Kicinski wrote: > > > On Thu, 8 Apr 2021 07:47:18 +0000 Jianbo Liu wrote: > > > > When device is removed, indirect block is unregisterd. As > > > > bo->unlocked_driver_cb is not initialized, the following UBSAN is > > > > triggered. > > > > > > > > UBSAN: invalid-load in net/sched/cls_api.c:1496:10 > > > > load of value 6 is not a valid value for type '_Bool' > > > > > > > > This patch fixes the warning by calling device's indr block bind > > > > callback, and unlocked_driver_cb is assigned with correct value. > > > > > > > > Fixes: 0fdcf78d5973 ("net: use flow_indr_dev_setup_offload()") > > > > Signed-off-by: Jianbo Liu <jian...@nvidia.com> > > > > Reviewed-by: Roi Dayan <r...@nvidia.com> > > > > > > It's been a while since I looked at this code but I don't understand > > > what you're doing here. > > > > To fix the UBSAN warning in tcf_block_unbind. It's easily triggered when > > netdev is removed before tunnel netdev. > > > > > The init in tc_block_indr_cleanup() makes sense. What's the change to > > > setup_cb achieving? Thanks. > > > > But unlocked_driver_cb of flow_block_offload is not initialized in init. > > Calling setup_cb is to get the correct value from driver. > > I'm trying to understand what became of this code :/ Was there no call > with FLOW_BLOCK_UNBIND to the driver when driver was unregistering > before your change?
Yes, I think so. > --