From: Mark H. <ma...@os...> - 2004-04-13 20:28:58
|
The net_proto_ops and the net_proto_family structures don't set the owner field. This prevents proper reference counting for the module and allows the module to be unloaded when in use. This diff initialized the owner field and also converts the initialization to the style used by the kernel code. Any objections to checking this in? Mark. --- /home/markh/views/tipc/cvs/source/unstable/net/tipc/linux-2.6/socket.c 2004-03-30 07:11:39.000000000 -0800 +++ socket.c 2004-04-13 13:14:06.000000000 -0700 @@ -1352,69 +1352,73 @@ } static struct proto_ops msg_ops = { - family:AF_TIPC, - release:release, - bind:bind, - connect:connect, - socketpair:no_skpair, - accept:accept, - getname:get_name, - poll:poll, - ioctl:ioctl, - listen:listen, - shutdown:shutdown, - setsockopt:setsockopt, - getsockopt:getsockopt, - sendmsg:send_msg, - recvmsg:recv_msg, - mmap:no_mmap, - sendpage:no_sendpage + .owner = THIS_MODULE, + .family = AF_TIPC, + .release = release, + .bind = bind, + .connect = connect, + .socketpair = no_skpair, + .accept = accept, + .getname = get_name, + .poll = poll, + .ioctl = ioctl, + .listen = listen, + .shutdown = shutdown, + .setsockopt = setsockopt, + .getsockopt = getsockopt, + .sendmsg = send_msg, + .recvmsg = recv_msg, + .mmap = no_mmap, + .sendpage = no_sendpage }; static struct proto_ops packet_ops = { - family:AF_TIPC, - release:release, - bind:bind, - connect:connect, - socketpair:no_skpair, - accept:accept, - getname:get_name, - poll:poll, - ioctl:ioctl, - listen:listen, - shutdown:shutdown, - setsockopt:setsockopt, - getsockopt:getsockopt, - sendmsg:send_packet, - recvmsg:recv_msg, - mmap:no_mmap, - sendpage:no_sendpage + .owner = THIS_MODULE, + .family = AF_TIPC, + .release = release, + .bind = bind, + .connect = connect, + .socketpair = no_skpair, + .accept = accept, + .getname = get_name, + .poll = poll, + .ioctl = ioctl, + .listen = listen, + .shutdown = shutdown, + .setsockopt = setsockopt, + .getsockopt = getsockopt, + .sendmsg = send_packet, + .recvmsg = recv_msg, + .mmap = no_mmap, + .sendpage = no_sendpage }; static struct proto_ops stream_ops = { - family:AF_TIPC, - release:release, - bind:bind, - connect:connect, - socketpair:no_skpair, - accept:accept, - getname:get_name, - poll:poll, - ioctl:ioctl, - listen:listen, - shutdown:shutdown, - setsockopt:setsockopt, - getsockopt:getsockopt, - sendmsg:send_stream, - recvmsg:recv_stream, - mmap:no_mmap, - sendpage:no_sendpage + .owner = THIS_MODULE, + .family = AF_TIPC, + .release = release, + .bind = bind, + .connect = connect, + .socketpair = no_skpair, + .accept = accept, + .getname = get_name, + .poll = poll, + .ioctl = ioctl, + .listen = listen, + .shutdown = shutdown, + .setsockopt = setsockopt, + .getsockopt = getsockopt, + .sendmsg = send_stream, + .recvmsg = recv_stream, + .mmap = no_mmap, + .sendpage = no_sendpage }; static struct net_proto_family tipc_family_ops = { - family:AF_TIPC, - create:tipc_socket + .owner = THIS_MODULE, + .family = AF_TIPC, + .create = tipc_socket }; int -- Mark Haverkamp <ma...@os...> |