#endif
 }
 
+static sa_family_t geneve_get_sk_family(struct geneve_sock *gs)
+{
+       return gs->sock->sk->sk_family;
+}
+
 static struct geneve_dev *geneve_lookup(struct geneve_sock *gs,
                                        __be32 addr, u8 vni[])
 {
        static u8 zero_vni[3];
        u8 *vni;
        int err = 0;
-       sa_family_t sa_family;
 #if IS_ENABLED(CONFIG_IPV6)
        struct ipv6hdr *ip6h = NULL;
        struct in6_addr addr6;
        static struct in6_addr zero_addr6;
 #endif
 
-       sa_family = gs->sock->sk->sk_family;
-
-       if (sa_family == AF_INET) {
+       if (geneve_get_sk_family(gs) == AF_INET) {
                iph = ip_hdr(skb); /* outer IP header... */
 
                if (gs->collect_md) {
 
                geneve = geneve_lookup(gs, addr, vni);
 #if IS_ENABLED(CONFIG_IPV6)
-       } else if (sa_family == AF_INET6) {
+       } else if (geneve_get_sk_family(gs) == AF_INET6) {
                ip6h = ipv6_hdr(skb); /* outer IPv6 header... */
 
                if (gs->collect_md) {
                        (gnvh->oam ? TUNNEL_OAM : 0) |
                        (gnvh->critical ? TUNNEL_CRIT_OPT : 0);
 
-               tun_dst = udp_tun_rx_dst(skb, sa_family, flags,
+               tun_dst = udp_tun_rx_dst(skb, geneve_get_sk_family(gs), flags,
                                         vni_to_tunnel_id(gnvh->vni),
                                         gnvh->opt_len * 4);
                if (!tun_dst)
        struct net_device *dev;
        struct sock *sk = gs->sock->sk;
        struct net *net = sock_net(sk);
-       sa_family_t sa_family = sk->sk_family;
+       sa_family_t sa_family = geneve_get_sk_family(gs);
        __be16 port = inet_sk(sk)->inet_sport;
        int err;
 
        struct net_device *dev;
        struct sock *sk = gs->sock->sk;
        struct net *net = sock_net(sk);
-       sa_family_t sa_family = sk->sk_family;
+       sa_family_t sa_family = geneve_get_sk_family(gs);
        __be16 port = inet_sk(sk)->inet_sport;
 
        rcu_read_lock();
 
        list_for_each_entry(gs, &gn->sock_list, list) {
                if (inet_sk(gs->sock->sk)->inet_sport == dst_port &&
-                   inet_sk(gs->sock->sk)->sk.sk_family == family) {
+                   geneve_get_sk_family(gs) == family) {
                        return gs;
                }
        }