Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src



On Wed, Sep 28, 2011 at 07:50:43PM +0100, Alexander Nasonov wrote:
> You probably need to assign to a temporary variable here
> 
> > +
> > +   if (cf_backend == NULL)
> > +           return ENOMEM;
> > +
> > +   mutex_enter(&cpufreq_lock);
> 
> and do cf_backend != NULL check one more time here before assigning
> a new value (from the temporary variable) to cf_backend.

Thanks, that was obvious.

> > +   mutex_enter(&cpufreq_lock);
> > +
> > +   if (cf_backend == NULL) {
> > +           mutex_exit(&cpufreq_lock);
> > +           return;
> > +   }
> > +
> > +   mutex_exit(&cpufreq_lock);
> > +   kmem_free(cf_backend, sizeof(*cf_backend));
> > +   cf_backend = NULL;
> 
> And something similar here.

What are the options to handle cases like this?

While looking for examples, I also noticed few bugs where the possibly
blocking kmem_free(9) is used while holding a mutex (e.g. ras_purgeall() in
kern_ras.c).

- Jukka.


Home | Main Index | Thread Index | Old Index