atomic_dec(&fl->users);
 }
 
-extern int                     ip6_ra_control(struct sock *sk, int sel,
-                                              void (*destructor)(struct sock *));
-
+extern int                     ip6_ra_control(struct sock *sk, int sel);
 
 extern int                     ipv6_parse_hopopts(struct sk_buff *skb);
 
 
 struct ip6_ra_chain *ip6_ra_chain;
 DEFINE_RWLOCK(ip6_ra_lock);
 
-int ip6_ra_control(struct sock *sk, int sel, void (*destructor)(struct sock *))
+int ip6_ra_control(struct sock *sk, int sel)
 {
        struct ip6_ra_chain *ra, *new_ra, **rap;
 
                        *rap = ra->next;
                        write_unlock_bh(&ip6_ra_lock);
 
-                       if (ra->destructor)
-                               ra->destructor(sk);
                        sock_put(sk);
                        kfree(ra);
                        return 0;
        }
        new_ra->sk = sk;
        new_ra->sel = sel;
-       new_ra->destructor = destructor;
        new_ra->next = ra;
        *rap = new_ra;
        sock_hold(sk);
        case IPV6_ROUTER_ALERT:
                if (optlen < sizeof(int))
                        goto e_inval;
-               retv = ip6_ra_control(sk, val, NULL);
+               retv = ip6_ra_control(sk, val);
                break;
        case IPV6_MTU_DISCOVER:
                if (optlen < sizeof(int))
 
 static void rawv6_close(struct sock *sk, long timeout)
 {
        if (inet_sk(sk)->num == IPPROTO_RAW)
-               ip6_ra_control(sk, -1, NULL);
+               ip6_ra_control(sk, -1);
        ip6mr_sk_done(sk);
        sk_common_release(sk);
 }