svn commit: r274274 - head/sys/net
Bjoern A. Zeeb
bz at FreeBSD.org
Sat Nov 8 15:06:30 UTC 2014
On 08 Nov 2014, at 07:23 , Gleb Smirnoff <glebius at FreeBSD.org> wrote:
> Author: glebius
> Date: Sat Nov 8 07:23:01 2014
> New Revision: 274274
> URL: https://svnweb.freebsd.org/changeset/base/274274
>
> Log:
> ifindex_alloc_locked() never fails and doesn't have no-lock version,
> so change the prototype.
>
> Sponsored by: Netflix
> Sponsored by: Nginx, Inc.
>
> Modified:
> head/sys/net/if.c
>
> Modified: head/sys/net/if.c
> ==============================================================================
> --- head/sys/net/if.c Sat Nov 8 06:43:33 2014 (r274273)
> +++ head/sys/net/if.c Sat Nov 8 07:23:01 2014 (r274274)
> @@ -265,13 +265,12 @@ ifnet_byindex_ref(u_short idx)
> * Allocate an ifindex array entry; return 0 on success or an error on
> * failure.
> */
> -static int
> -ifindex_alloc_locked(u_short *idxp)
> +static u_short
That feels like going backwards; we should really make sure we can support ifindexes >> 64k
> +ifindex_alloc(void)
> {
> u_short idx;
>
> IFNET_WLOCK_ASSERT();
> -
> retry:
> /*
> * Try to find an empty slot below V_if_index. If we fail, take the
> @@ -289,8 +288,7 @@ retry:
> }
> if (idx > V_if_index)
> V_if_index = idx;
> - *idxp = idx;
> - return (0);
> + return (idx);
> }
>
> static void
> @@ -431,11 +429,7 @@ if_alloc(u_char type)
>
> ifp = malloc(sizeof(struct ifnet), M_IFNET, M_WAITOK|M_ZERO);
> IFNET_WLOCK();
> - if (ifindex_alloc_locked(&idx) != 0) {
> - IFNET_WUNLOCK();
> - free(ifp, M_IFNET);
> - return (NULL);
> - }
> + idx = ifindex_alloc();
> ifnet_setbyindex_locked(idx, IFNET_HOLD);
> IFNET_WUNLOCK();
> ifp->if_index = idx;
> @@ -1022,7 +1016,6 @@ if_detach_internal(struct ifnet *ifp, in
> void
> if_vmove(struct ifnet *ifp, struct vnet *new_vnet)
> {
> - u_short idx;
>
> /*
> * Detach from current vnet, but preserve LLADDR info, do not
> @@ -1054,11 +1047,7 @@ if_vmove(struct ifnet *ifp, struct vnet
> CURVNET_SET_QUIET(new_vnet);
>
> IFNET_WLOCK();
> - if (ifindex_alloc_locked(&idx) != 0) {
> - IFNET_WUNLOCK();
> - panic("if_index overflow");
> - }
> - ifp->if_index = idx;
> + ifp->if_index = ifindex_alloc();
> ifnet_setbyindex_locked(ifp->if_index, ifp);
> IFNET_WUNLOCK();
>
>
—
Bjoern A. Zeeb "Come on. Learn, goddamn it.", WarGames, 1983
More information about the svn-src-all
mailing list