[PATCH 2/2] staging: android: ashmem: Don't allow range_alloc() to fail.

Dan Carpenter dan.carpenter at oracle.com
Fri Feb 15 06:58:26 UTC 2019


On Thu, Feb 14, 2019 at 11:22:51AM -0500, Joel Fernandes wrote:
> On Sat, Feb 09, 2019 at 11:24:03AM +0900, Tetsuo Handa wrote:
> > @@ -722,10 +719,17 @@ static int ashmem_pin_unpin(struct ashmem_area *asma, unsigned long cmd,
> >  	struct ashmem_pin pin;
> >  	size_t pgstart, pgend;
> >  	int ret = -EINVAL;
> > +	struct ashmem_range *range = NULL;
> >  
> >  	if (copy_from_user(&pin, p, sizeof(pin)))
> >  		return -EFAULT;
> >  
> > +	if (cmd == ASHMEM_PIN || cmd == ASHMEM_UNPIN) {
> > +		range = kmem_cache_zalloc(ashmem_range_cachep, GFP_KERNEL);
> > +		if (!range)
> > +			return -ENOMEM;
> 
> According to the too-small-to-fail rule, why are you checking for errors
> here?
> 

As a static analysis person, Smatch knows about the GFP_NOFAIL flag.
The small size rule would probably be easy enough to implement for 80%
of the cases but I have avoided doing that and still patch up the code
when I find missing NULL checks.

regards,
dan carpenter




More information about the devel mailing list