}
spin_lock(&net_family_lock);
- if (rcu_dereference_protected(net_families[ops->family],
- lockdep_is_held(&net_family_lock)))
+ if (rcu_dereference_protected(
+ net_families[array_index_nospec(ops->family, NPROTO)],
+ lockdep_is_held(&net_family_lock)))
err = -EEXIST;
else {
- rcu_assign_pointer(net_families[ops->family], ops);
+ rcu_assign_pointer(
+ net_families[array_index_nospec(ops->family, NPROTO)],
+ ops);
err = 0;
}
spin_unlock(&net_family_lock);