Lines Matching refs:new
52 * we'll continue to use the old array and just won't see the new one.
76 * add new eventfds without ever blocking readers from accessing the array.
81 * We allocate a brand new one-larger array, copy the old one and add our new
82 * element. Then we make the lg eventfd pointer point to the new array.
92 struct lg_eventfd_map *new, *old = lg->eventfds;
102 * Replace the old array with the new one, carefully: others can
105 new = kmalloc(sizeof(*new) + sizeof(new->map[0]) * (old->num + 1),
107 if (!new)
111 memcpy(new->map, old->map, sizeof(old->map[0]) * old->num);
112 new->num = old->num;
114 /* Now append new entry. */
115 new->map[new->num].addr = addr;
116 new->map[new->num].event = eventfd_ctx_fdget(fd);
117 if (IS_ERR(new->map[new->num].event)) {
118 int err = PTR_ERR(new->map[new->num].event);
119 kfree(new);
122 new->num++;
125 * Now put new one in place: rcu_assign_pointer() is a fancy way of
126 * doing "lg->eventfds = new", but it uses memory barriers to make
127 * absolutely sure that the contents of "new" written above is nailed
133 rcu_assign_pointer(lg->eventfds, new);