struct sockaddr_rxrpc *srx,
                                  int len)
 {
+       unsigned tail;
+
        if (len < sizeof(struct sockaddr_rxrpc))
                return -EINVAL;
 
                _debug("INET: %x @ %pI4",
                       ntohs(srx->transport.sin.sin_port),
                       &srx->transport.sin.sin_addr);
-               if (srx->transport_len > 8)
-                       memset((void *)&srx->transport + 8, 0,
-                              srx->transport_len - 8);
+               tail = offsetof(struct sockaddr_rxrpc, transport.sin.__pad);
                break;
 
        case AF_INET6:
                return -EAFNOSUPPORT;
        }
 
+       if (tail < len)
+               memset((void *)srx + tail, 0, len - tail);
        return 0;
 }