Re: RCU issue with SELinux (Re: SELINUX performance issues)

From: Stephen Smalley
Date: Thu Aug 26 2004 - 08:29:52 EST


On Thu, 2004-08-26 at 03:53, Kaigai Kohei wrote:
> In my understanding, your worry about robustness is the execution path
> when kmalloc() returns NULL.

Correct.

> (But avc_insert() always returns 0, because avc_insert() reclaim a avc_node
> under the spinlock when free_list is empty.)

Yes, this is the point. avc_has_perm could not fail previously from an
out of memory condition, as the cache nodes were preallocated,
maintained on their own freelist, and reclaimed as needed.

> By this method, the decision-making is available irrespective of
> the result of kmalloc(). Is it robustless?
> The original implementation has too many lock contensitons in Big-SMP
> environment. It is more positive to consider the method using RCU.

Yes, that would address my concern. However, I'm still unclear as to
why using RCU mandates that we migrate from preallocated nodes to
dynamic allocation. I certainly agree that the existing global spinlock
doesn't scale.

> Please wait for a patch, thanks.

Thanks for working on this. Could you also supply updated performance
data when you have a newer patch? Thanks.

--
Stephen Smalley <sds@xxxxxxxxxxxxxx>
National Security Agency

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/