On Tue, Aug 20, 2024 at 12:38:21AM +0530, Harshit Mogalapalli wrote:
> Hey Dan,
> 
> I have noticed some warnings which mark scoped_guard() as unreachable code
> on today's next.
> 
> drivers/platform/x86/ideapad-laptop.c:856 dytc_profile_set() warn: ignoring
> unreachable code.
> 

drivers/platform/x86/ideapad-laptop.c
   848  static int dytc_profile_set(struct platform_profile_handler *pprof,
   849                              enum platform_profile_option profile)
   850  {
   851          struct ideapad_dytc_priv *dytc = container_of(pprof, struct 
ideapad_dytc_priv, pprof);
   852          struct ideapad_private *priv = dytc->priv;
   853          unsigned long output;
   854          int err;
   855  
   856          scoped_guard(mutex_intr, &dytc->mutex) {

scoped_guard is actually a for loop that iterates one time.  So the post-op
expression isn't reachable because to the return 0;  This seems like it might
be a common false positive.

Add it to smatch_data/kernel.unreachable.ignore.  Except...  Ugh, I already did
but haven't committed it yet.  I'll do that.

   857                  if (profile == PLATFORM_PROFILE_BALANCED) {
   858                          /* To get back to balanced mode we just issue a 
reset command */
   859                          err = eval_dytc(priv->adev->handle, 
DYTC_CMD_RESET, NULL);
   860                          if (err)
   861                                  return err;
   862                  } else {
   863                          int perfmode;
   864  
   865                          err = convert_profile_to_dytc(profile, 
&perfmode);
   866                          if (err)
   867                                  return err;
   868  
   869                          /* Determine if we are in CQL mode. This alters 
the commands we do */
   870                          err = dytc_cql_command(priv,
   871                                                 
DYTC_SET_COMMAND(DYTC_FUNCTION_MMC, perfmode, 1),
   872                                                 &output);
   873                          if (err)
   874                                  return err;
   875                  }
   876  
   877                  /* Success - update current profile */
   878                  dytc->current_profile = profile;
   879                  return 0;
   880          }
   881  
   882          return -EINTR;
   883  }


> drivers/input/touchscreen/wacom_w8001.c:383 w8001_open() warn: ignoring
> unreachable code.

This one is the same.

Pushed.

regards,
dan carpenter

Reply via email to