Re: [PATCH] 2.4.13pre3aa1: expand_fdset() may use invalid pointer

Andrea Arcangeli
2001-10-18T08:25:38Z

On Thu, Oct 18, 2001 at 12:11:24PM +0530, Maneesh Soni wrote:
> +struct rcu_fd_array {
> + struct rcu_head rh;
> + struct file **array;
> + int nfds;
> +};
> +
> +struct rcu_fd_set {
> + struct rcu_head rh;
> + fd_set *openset;
> + fd_set *execset;
> + int nfds;
> +};

Some other very minor comment. I'd also rename them fd_array, and
fd_set.

think, when we add a spinlock to a data structure (say a semaphore or a
waitqueue) to scale per-spinlock or per-waitqueue we're not going to
rename the "struct semaphore" into "struct per_spinlock_semaphore", at
least unless we also provide two different types of semaphores.

same happens if we move a data structure into the slab cache, we don't
call it "struct slab_semaphore" just because it gets allocated/freed via
the slab cache rather than by using kmalloc/kfree.

I'd also put the rcu_head at the end of the structure, the rcu_head
should be used only when we are going to free the data, so it's not used
at runtime and it worth to keep the other fields in the first cacheline
so they're less likely to be splitted off in more than one cacheline.

Andrea