Hi Dan, Thank you for your quick reply. On Monday, 28 May 2018 13:20:49 EEST Dan Carpenter wrote: > On Mon, May 28, 2018 at 11:28:41AM +0300, Laurent Pinchart wrote: > > and I still get the same warning. I had to write the following (which is > > obviously not correct) to silence the warning. > > > > if (pipe->num_inputs > 2) > > brx = &vsp1->bru->entity; > > else if (pipe->brx) > > brx = pipe->brx; > > else if (!vsp1->bru->entity.pipe) > > brx = &vsp1->bru->entity; > > else { > > (void)vsp1->brs->entity; > > brx = &vsp1->brs->entity; > > } > > > > Both the (void)vsp1->brs->entity and the removal of the !drm_pipe-> > > force_brx_release were needed, any of those on its own didn't fix the > > problem. > > The problem in this case is the first "brx = &vsp1->bru->entity;". > Smatch assumes &vsp1->bru->entity can be == to pipe->brx and NULL. Why does smatch assume that &vsp1->bru->entity can be NULL, when the previous line dereferences vsp1->bru ? > Adding a "(void)vsp1->bru->entity;" on that path will silence the > warning (hopefully). -- Regards, Laurent Pinchart