Hey Dan, Thanks for submitting this. On Tue, 18 May 2021 at 11:20, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > The ti_sn_aux_transfer() function returns ssize_t (signed long). It's > supposed to return negative error codes or the number of bytes > transferred. The "ret" variable is int and the "len" variable is > unsigned int. > > The problem is that with a ternary like this, the negative int is first > type promoted to unsigned int to match "len" at this point it is a high > positive value. Then when it is type promoted to ssize_t (s64) it > remains a high positive value instead of sign extending and becoming a > negative again. > > Fix this by removing the ternary. > > Fixes: b137406d9679 ("drm/bridge: ti-sn65dsi86: If refclk, DP AUX can happen w/out pre-enable") > Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> > --- > drivers/gpu/drm/bridge/ti-sn65dsi86.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/bridge/ti-sn65dsi86.c b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > index bb0a0e1c6341..45a2969afb2b 100644 > --- a/drivers/gpu/drm/bridge/ti-sn65dsi86.c > +++ b/drivers/gpu/drm/bridge/ti-sn65dsi86.c > @@ -1042,7 +1042,9 @@ static ssize_t ti_sn_aux_transfer(struct drm_dp_aux *aux, > pm_runtime_mark_last_busy(pdata->dev); > pm_runtime_put_autosuspend(pdata->dev); > > - return ret ? ret : len; > + if (ret) > + return ret; > + return len; > } > Reviewed-by: Robert Foss <robert.foss@xxxxxxxxxx> Applying to drm-misc-fixes.