Move panel driver out of staging?

Dan Carpenter dan.carpenter at oracle.com
Mon Dec 28 15:27:36 UTC 2015


On Mon, Dec 28, 2015 at 12:32:39PM +0100, Ksenija Stanojević wrote:
> Hi Willy,
> 
> I'm helping Greg do a bit of cleanup in the staging tree, I noticed that
> panel driver is maybe ready to be moved to drivers/misc. Are there any
> TODO tasks left to do? I already sent checkpatch clean-up patches.
> 

I feel like lcd_write_data() should take a u8 instead of an int.  Or
possibly a char, I suppose.

Could we tighten the checking in input_name2mask() a bit?

drivers/staging/panel/panel.c
  2044  static int input_name2mask(const char *name, pmask_t *mask, pmask_t *value,
  2045                             char *imask, char *omask)
  2046  {
  2047          static char sigtab[10] = "EeSsPpAaBb";
  2048          char im, om;

Om is 8 bits (signed or not depending on the arch).

  2049          pmask_t m, v;
  2050  
  2051          om = 0ULL;
  2052          im = 0ULL;
  2053          m = 0ULL;
  2054          v = 0ULL;
  2055          while (*name) {
  2056                  int in, out, bit, neg;
  2057  
  2058                  for (in = 0; (in < sizeof(sigtab)) && (sigtab[in] != *name);
  2059                       in++)
  2060                          ;
  2061  
  2062                  if (in >= sizeof(sigtab))
  2063                          return 0;       /* input name not found */
  2064                  neg = (in & 1); /* odd (lower) names are negated */
  2065                  in >>= 1;
  2066                  im |= BIT(in);
  2067  
  2068                  name++;
  2069                  if (isdigit(*name)) {
  2070                          out = *name - '0';
  2071                          om |= BIT(out);
                                ^^^^^^^^^^^^^^
out is 0-9 so it's too much for "om".  I don't know if this causes a
problem, but let's remove the question by adding a check for illegal
values.
			if (*name >= '0' && *name <= '7') {


  2072                  } else if (*name == '-') {
  2073                          out = 8;
  2074                  } else {
  2075                          return 0;       /* unknown bit name */
  2076                  }
  2077  
  2078                  bit = (out * 5) + in;
  2079  
  2080                  m |= 1ULL << bit;
  2081                  if (!neg)
  2082                          v |= 1ULL << bit;
  2083                  name++;
  2084          }
  2085          *mask = m;
  2086          *value = v;
  2087          if (imask)
  2088                  *imask |= im;
  2089          if (imask)
  2090                  *imask |= im;
  2091          if (omask)
  2092                  *omask |= om;

It's too much for omask also.

  2093          return 1;
  2094  }

regards,
dan carpenter


More information about the devel mailing list