svn commit: r273576 - head/sys/dev/uart

Marcelo Araujo araujobsdport at gmail.com
Fri Oct 24 06:59:37 UTC 2014


2014-10-24 13:58 GMT+08:00 Mateusz Guzik <mjguzik at gmail.com>:

> On Fri, Oct 24, 2014 at 05:39:32AM +0000, Marcelo Araujo wrote:
> > Author: araujo (ports committer)
> > Date: Fri Oct 24 05:39:32 2014
> > New Revision: 273576
> > URL: https://svnweb.freebsd.org/changeset/base/273576
> >
> > Log:
> >   Fix a leaked Storage Variable.
> >
> >  int
> >  uart_getenv(int devtype, struct uart_devinfo *di, struct uart_class
> *class)
> >  {
> > -     const char *spec;
> > +     const char *cp, *spec;
> >       bus_addr_t addr = ~0U;
> >       int error;
> >
> > @@ -214,12 +214,12 @@ uart_getenv(int devtype, struct uart_dev
> >        * port (resp).
> >        */
> >       if (devtype == UART_DEV_CONSOLE)
> > -             spec = kern_getenv("hw.uart.console");
> > +             cp = kern_getenv("hw.uart.console");
> >       else if (devtype == UART_DEV_DBGPORT)
> > -             spec = kern_getenv("hw.uart.dbgport");
> > +             cp = kern_getenv("hw.uart.dbgport");
> >       else
> > -             spec = NULL;
> > -     if (spec == NULL)
> > +             cp = NULL;
> > +     if (cp == NULL)
> >               return (ENXIO);
> [..]
> >               default:
> > +                     freeenv(__DECONST(char *, cp));
> >                       return (EINVAL);
> >               }
> >               if (*spec == '\0')
> >                       break;
> > -             if (*spec != ',')
> > +             if (*spec != ',') {
> > +                     freeenv(__DECONST(char *, cp));
> >                       return (EINVAL);
> > +             }
> >               spec++;
> >       }
> > +     freeenv(__DECONST(char *, cp));
> >
>
> Why not 'char *cp;'? That would avoid __DECONST entirely and would not
> require spec to change type.
>

Well, it might be possible to use 'char *cp', however as I'm not aware of
all uart implementation, I just followed the previous 'spec' declaration
type that is a constant too. I'm gonna take a look on it, to check if there
is any backward to only use 'char *cp'.


>
> There are some cosmetics around that may be worth fixing (e.g. if,
> else-if instead of switch, while (1) instead of for (;;)).
>

Yes, that for sure makes sense and it is worth.

Thanks to point all of these things.
Best Regards,
-- 

-- 
Marcelo Araujo            (__)araujo at FreeBSD.org
\\\'',)http://www.FreeBSD.org <http://www.freebsd.org/>   \/  \ ^
Power To Server.         .\. /_)


More information about the svn-src-head mailing list