Re: [PATCH] device_cgroup: do not use rule acceptance function to validate access

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

 



Hi Tejun,

On Mon, Apr 14, 2014 at 02:03:23PM -0400, Tejun Heo wrote:
> On Mon, Apr 14, 2014 at 10:47:54AM -0400, Aristeu Rozanski wrote:
> > may_access() is currently used to validate both new exceptions from children
> > groups and to check if an access is allowed. This not only makes it hard to
> > understand and maintain, but it's also incorrect.
> > 
> > It currently allows one to:
> > 
> > 	# mkdir new_group
> > 	# cd new_group
> > 	# echo $$ >tasks
> > 	# echo "c 1:3 w" >devices.deny
> > 	# echo >/dev/null
> > 	# echo $?
> > 	0
> 
> It'd be nice to explain how this is broken and why the code paths
> can't be shared.

ok

> > This patch implements the device file access check separately and fixes
> > the issue.
> > 
> > This is broken since c39a2a3018f8065cb5ea38b0314c1bbedb2cfa0d
> 
> Please use 12-digits-of-SHA1 ("Subject of the patch") format.

ok

> > After review, this should be considered for stable series.
> > 
> > Signed-off-by: Aristeu Rozanski <aris@xxxxxxxxxx>
> 
> Can you please cc stable on the next posting?

ok

> > -	rc = may_access(dev_cgroup, &ex, dev_cgroup->behavior);
> > +	behavior = dev_cgroup->behavior;
> > +	list_for_each_entry_rcu(ex, &dev_cgroup->exceptions, list) {
> > +		if (type == DEV_BLOCK && !(ex->type & DEV_BLOCK))
> > +			continue;
> > +		if (type == DEV_CHAR && !(ex->type & DEV_CHAR))
> > +			continue;
> > +		if (ex->major != ~0 && major != ex->major)
> > +			continue;
> > +		if (ex->minor != ~0 && minor != ex->minor)
> > +			continue;
> > +		if (access & (~ex->access))
> > +			continue;
> > +		match = true;
> > +		break;
> 
> Can't we at least factor out the above part and share it between the
> two functions?

ok

> Currently, there's a lot of duplication in rather
> delicate code and it's not clear where they differ and why.

Are you referring to the duplication in this patch or other areas too?

-- 
Aristeu

--
To unsubscribe from this list: send the line "unsubscribe cgroups" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [Monitors]

  Powered by Linux