Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: make ->{get,set}sockopt in proto_ops optional

Just check for a NULL method instead of wiring up
sock_no_{get,set}sockopt.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Christoph Hellwig and committed by
David S. Miller
a44d9e72 3021ad52

+11 -73
-1
crypto/af_alg.c
··· 335 335 .ioctl = sock_no_ioctl, 336 336 .listen = sock_no_listen, 337 337 .shutdown = sock_no_shutdown, 338 - .getsockopt = sock_no_getsockopt, 339 338 .mmap = sock_no_mmap, 340 339 .sendpage = sock_no_sendpage, 341 340 .sendmsg = sock_no_sendmsg,
-4
crypto/algif_aead.c
··· 361 361 .ioctl = sock_no_ioctl, 362 362 .listen = sock_no_listen, 363 363 .shutdown = sock_no_shutdown, 364 - .getsockopt = sock_no_getsockopt, 365 364 .mmap = sock_no_mmap, 366 365 .bind = sock_no_bind, 367 366 .accept = sock_no_accept, 368 - .setsockopt = sock_no_setsockopt, 369 367 370 368 .release = af_alg_release, 371 369 .sendmsg = aead_sendmsg, ··· 452 454 .ioctl = sock_no_ioctl, 453 455 .listen = sock_no_listen, 454 456 .shutdown = sock_no_shutdown, 455 - .getsockopt = sock_no_getsockopt, 456 457 .mmap = sock_no_mmap, 457 458 .bind = sock_no_bind, 458 459 .accept = sock_no_accept, 459 - .setsockopt = sock_no_setsockopt, 460 460 461 461 .release = af_alg_release, 462 462 .sendmsg = aead_sendmsg_nokey,
-4
crypto/algif_hash.c
··· 279 279 .ioctl = sock_no_ioctl, 280 280 .listen = sock_no_listen, 281 281 .shutdown = sock_no_shutdown, 282 - .getsockopt = sock_no_getsockopt, 283 282 .mmap = sock_no_mmap, 284 283 .bind = sock_no_bind, 285 - .setsockopt = sock_no_setsockopt, 286 284 287 285 .release = af_alg_release, 288 286 .sendmsg = hash_sendmsg, ··· 381 383 .ioctl = sock_no_ioctl, 382 384 .listen = sock_no_listen, 383 385 .shutdown = sock_no_shutdown, 384 - .getsockopt = sock_no_getsockopt, 385 386 .mmap = sock_no_mmap, 386 387 .bind = sock_no_bind, 387 - .setsockopt = sock_no_setsockopt, 388 388 389 389 .release = af_alg_release, 390 390 .sendmsg = hash_sendmsg_nokey,
-2
crypto/algif_rng.c
··· 101 101 .ioctl = sock_no_ioctl, 102 102 .listen = sock_no_listen, 103 103 .shutdown = sock_no_shutdown, 104 - .getsockopt = sock_no_getsockopt, 105 104 .mmap = sock_no_mmap, 106 105 .bind = sock_no_bind, 107 106 .accept = sock_no_accept, 108 - .setsockopt = sock_no_setsockopt, 109 107 .sendmsg = sock_no_sendmsg, 110 108 .sendpage = sock_no_sendpage, 111 109
-4
crypto/algif_skcipher.c
··· 188 188 .ioctl = sock_no_ioctl, 189 189 .listen = sock_no_listen, 190 190 .shutdown = sock_no_shutdown, 191 - .getsockopt = sock_no_getsockopt, 192 191 .mmap = sock_no_mmap, 193 192 .bind = sock_no_bind, 194 193 .accept = sock_no_accept, 195 - .setsockopt = sock_no_setsockopt, 196 194 197 195 .release = af_alg_release, 198 196 .sendmsg = skcipher_sendmsg, ··· 279 281 .ioctl = sock_no_ioctl, 280 282 .listen = sock_no_listen, 281 283 .shutdown = sock_no_shutdown, 282 - .getsockopt = sock_no_getsockopt, 283 284 .mmap = sock_no_mmap, 284 285 .bind = sock_no_bind, 285 286 .accept = sock_no_accept, 286 - .setsockopt = sock_no_setsockopt, 287 287 288 288 .release = af_alg_release, 289 289 .sendmsg = skcipher_sendmsg_nokey,
-2
drivers/isdn/mISDN/socket.c
··· 738 738 .recvmsg = sock_no_recvmsg, 739 739 .listen = sock_no_listen, 740 740 .shutdown = sock_no_shutdown, 741 - .setsockopt = sock_no_setsockopt, 742 - .getsockopt = sock_no_getsockopt, 743 741 .connect = sock_no_connect, 744 742 .socketpair = sock_no_socketpair, 745 743 .accept = sock_no_accept,
-2
drivers/net/ppp/pppoe.c
··· 1110 1110 .poll = datagram_poll, 1111 1111 .listen = sock_no_listen, 1112 1112 .shutdown = sock_no_shutdown, 1113 - .setsockopt = sock_no_setsockopt, 1114 - .getsockopt = sock_no_getsockopt, 1115 1113 .sendmsg = pppoe_sendmsg, 1116 1114 .recvmsg = pppoe_recvmsg, 1117 1115 .mmap = sock_no_mmap,
-2
drivers/net/ppp/pptp.c
··· 618 618 .getname = pptp_getname, 619 619 .listen = sock_no_listen, 620 620 .shutdown = sock_no_shutdown, 621 - .setsockopt = sock_no_setsockopt, 622 - .getsockopt = sock_no_getsockopt, 623 621 .sendmsg = sock_no_sendmsg, 624 622 .recvmsg = sock_no_recvmsg, 625 623 .mmap = sock_no_mmap,
-2
include/net/sock.h
··· 1714 1714 int sock_no_ioctl(struct socket *, unsigned int, unsigned long); 1715 1715 int sock_no_listen(struct socket *, int); 1716 1716 int sock_no_shutdown(struct socket *, int); 1717 - int sock_no_getsockopt(struct socket *, int , int, char __user *, int __user *); 1718 - int sock_no_setsockopt(struct socket *, int, int, char __user *, unsigned int); 1719 1717 int sock_no_sendmsg(struct socket *, struct msghdr *, size_t); 1720 1718 int sock_no_sendmsg_locked(struct sock *sk, struct msghdr *msg, size_t len); 1721 1719 int sock_no_recvmsg(struct socket *, struct msghdr *, size_t, int);
-2
net/appletalk/ddp.c
··· 1917 1917 #endif 1918 1918 .listen = sock_no_listen, 1919 1919 .shutdown = sock_no_shutdown, 1920 - .setsockopt = sock_no_setsockopt, 1921 - .getsockopt = sock_no_getsockopt, 1922 1920 .sendmsg = atalk_sendmsg, 1923 1921 .recvmsg = atalk_recvmsg, 1924 1922 .mmap = sock_no_mmap,
-2
net/bluetooth/bnep/sock.c
··· 182 182 .recvmsg = sock_no_recvmsg, 183 183 .listen = sock_no_listen, 184 184 .shutdown = sock_no_shutdown, 185 - .setsockopt = sock_no_setsockopt, 186 - .getsockopt = sock_no_getsockopt, 187 185 .connect = sock_no_connect, 188 186 .socketpair = sock_no_socketpair, 189 187 .accept = sock_no_accept,
-2
net/bluetooth/cmtp/sock.c
··· 185 185 .recvmsg = sock_no_recvmsg, 186 186 .listen = sock_no_listen, 187 187 .shutdown = sock_no_shutdown, 188 - .setsockopt = sock_no_setsockopt, 189 - .getsockopt = sock_no_getsockopt, 190 188 .connect = sock_no_connect, 191 189 .socketpair = sock_no_socketpair, 192 190 .accept = sock_no_accept,
-2
net/bluetooth/hidp/sock.c
··· 233 233 .recvmsg = sock_no_recvmsg, 234 234 .listen = sock_no_listen, 235 235 .shutdown = sock_no_shutdown, 236 - .setsockopt = sock_no_setsockopt, 237 - .getsockopt = sock_no_getsockopt, 238 236 .connect = sock_no_connect, 239 237 .socketpair = sock_no_socketpair, 240 238 .accept = sock_no_accept,
-2
net/caif/caif_socket.c
··· 981 981 .listen = sock_no_listen, 982 982 .shutdown = sock_no_shutdown, 983 983 .setsockopt = setsockopt, 984 - .getsockopt = sock_no_getsockopt, 985 984 .sendmsg = caif_seqpkt_sendmsg, 986 985 .recvmsg = caif_seqpkt_recvmsg, 987 986 .mmap = sock_no_mmap, ··· 1001 1002 .listen = sock_no_listen, 1002 1003 .shutdown = sock_no_shutdown, 1003 1004 .setsockopt = setsockopt, 1004 - .getsockopt = sock_no_getsockopt, 1005 1005 .sendmsg = caif_stream_sendmsg, 1006 1006 .recvmsg = caif_stream_recvmsg, 1007 1007 .mmap = sock_no_mmap,
-2
net/can/bcm.c
··· 1648 1648 .gettstamp = sock_gettstamp, 1649 1649 .listen = sock_no_listen, 1650 1650 .shutdown = sock_no_shutdown, 1651 - .setsockopt = sock_no_setsockopt, 1652 - .getsockopt = sock_no_getsockopt, 1653 1651 .sendmsg = bcm_sendmsg, 1654 1652 .recvmsg = bcm_recvmsg, 1655 1653 .mmap = sock_no_mmap,
-14
net/core/sock.c
··· 2783 2783 } 2784 2784 EXPORT_SYMBOL(sock_no_shutdown); 2785 2785 2786 - int sock_no_setsockopt(struct socket *sock, int level, int optname, 2787 - char __user *optval, unsigned int optlen) 2788 - { 2789 - return -EOPNOTSUPP; 2790 - } 2791 - EXPORT_SYMBOL(sock_no_setsockopt); 2792 - 2793 - int sock_no_getsockopt(struct socket *sock, int level, int optname, 2794 - char __user *optval, int __user *optlen) 2795 - { 2796 - return -EOPNOTSUPP; 2797 - } 2798 - EXPORT_SYMBOL(sock_no_getsockopt); 2799 - 2800 2786 int sock_no_sendmsg(struct socket *sock, struct msghdr *m, size_t len) 2801 2787 { 2802 2788 return -EOPNOTSUPP;
-2
net/key/af_key.c
··· 3734 3734 .ioctl = sock_no_ioctl, 3735 3735 .listen = sock_no_listen, 3736 3736 .shutdown = sock_no_shutdown, 3737 - .setsockopt = sock_no_setsockopt, 3738 - .getsockopt = sock_no_getsockopt, 3739 3737 .mmap = sock_no_mmap, 3740 3738 .sendpage = sock_no_sendpage, 3741 3739
-2
net/nfc/llcp_sock.c
··· 921 921 .ioctl = sock_no_ioctl, 922 922 .listen = sock_no_listen, 923 923 .shutdown = sock_no_shutdown, 924 - .setsockopt = sock_no_setsockopt, 925 - .getsockopt = sock_no_getsockopt, 926 924 .sendmsg = sock_no_sendmsg, 927 925 .recvmsg = llcp_sock_recvmsg, 928 926 .mmap = sock_no_mmap,
-4
net/nfc/rawsock.c
··· 276 276 .ioctl = sock_no_ioctl, 277 277 .listen = sock_no_listen, 278 278 .shutdown = sock_no_shutdown, 279 - .setsockopt = sock_no_setsockopt, 280 - .getsockopt = sock_no_getsockopt, 281 279 .sendmsg = rawsock_sendmsg, 282 280 .recvmsg = rawsock_recvmsg, 283 281 .mmap = sock_no_mmap, ··· 294 296 .ioctl = sock_no_ioctl, 295 297 .listen = sock_no_listen, 296 298 .shutdown = sock_no_shutdown, 297 - .setsockopt = sock_no_setsockopt, 298 - .getsockopt = sock_no_getsockopt, 299 299 .sendmsg = sock_no_sendmsg, 300 300 .recvmsg = rawsock_recvmsg, 301 301 .mmap = sock_no_mmap,
-2
net/packet/af_packet.c
··· 4503 4503 .gettstamp = sock_gettstamp, 4504 4504 .listen = sock_no_listen, 4505 4505 .shutdown = sock_no_shutdown, 4506 - .setsockopt = sock_no_setsockopt, 4507 - .getsockopt = sock_no_getsockopt, 4508 4506 .sendmsg = packet_sendmsg_spkt, 4509 4507 .recvmsg = packet_recvmsg, 4510 4508 .mmap = sock_no_mmap,
-2
net/phonet/socket.c
··· 439 439 .ioctl = pn_socket_ioctl, 440 440 .listen = sock_no_listen, 441 441 .shutdown = sock_no_shutdown, 442 - .setsockopt = sock_no_setsockopt, 443 - .getsockopt = sock_no_getsockopt, 444 442 .sendmsg = pn_socket_sendmsg, 445 443 .recvmsg = sock_common_recvmsg, 446 444 .mmap = sock_no_mmap,
-2
net/qrtr/qrtr.c
··· 1208 1208 .gettstamp = sock_gettstamp, 1209 1209 .poll = datagram_poll, 1210 1210 .shutdown = sock_no_shutdown, 1211 - .setsockopt = sock_no_setsockopt, 1212 - .getsockopt = sock_no_getsockopt, 1213 1211 .release = qrtr_release, 1214 1212 .mmap = sock_no_mmap, 1215 1213 .sendpage = sock_no_sendpage,
+7 -2
net/smc/af_smc.c
··· 1742 1742 /* generic setsockopts reaching us here always apply to the 1743 1743 * CLC socket 1744 1744 */ 1745 - rc = smc->clcsock->ops->setsockopt(smc->clcsock, level, optname, 1746 - optval, optlen); 1745 + if (unlikely(!smc->clcsock->ops->setsockopt)) 1746 + rc = -EOPNOTSUPP; 1747 + else 1748 + rc = smc->clcsock->ops->setsockopt(smc->clcsock, level, optname, 1749 + optval, optlen); 1747 1750 if (smc->clcsock->sk->sk_err) { 1748 1751 sk->sk_err = smc->clcsock->sk->sk_err; 1749 1752 sk->sk_error_report(sk); ··· 1811 1808 1812 1809 smc = smc_sk(sock->sk); 1813 1810 /* socket options apply to the CLC socket */ 1811 + if (unlikely(!smc->clcsock->ops->getsockopt)) 1812 + return -EOPNOTSUPP; 1814 1813 return smc->clcsock->ops->getsockopt(smc->clcsock, level, optname, 1815 1814 optval, optlen); 1816 1815 }
+4
net/socket.c
··· 2131 2131 2132 2132 if (level == SOL_SOCKET && !sock_use_custom_sol_socket(sock)) 2133 2133 err = sock_setsockopt(sock, level, optname, optval, optlen); 2134 + else if (unlikely(!sock->ops->setsockopt)) 2135 + err = -EOPNOTSUPP; 2134 2136 else 2135 2137 err = sock->ops->setsockopt(sock, level, optname, optval, 2136 2138 optlen); ··· 2177 2175 2178 2176 if (level == SOL_SOCKET) 2179 2177 err = sock_getsockopt(sock, level, optname, optval, optlen); 2178 + else if (unlikely(!sock->ops->getsockopt)) 2179 + err = -EOPNOTSUPP; 2180 2180 else 2181 2181 err = sock->ops->getsockopt(sock, level, optname, optval, 2182 2182 optlen);
-6
net/unix/af_unix.c
··· 714 714 #endif 715 715 .listen = unix_listen, 716 716 .shutdown = unix_shutdown, 717 - .setsockopt = sock_no_setsockopt, 718 - .getsockopt = sock_no_getsockopt, 719 717 .sendmsg = unix_stream_sendmsg, 720 718 .recvmsg = unix_stream_recvmsg, 721 719 .mmap = sock_no_mmap, ··· 739 741 #endif 740 742 .listen = sock_no_listen, 741 743 .shutdown = unix_shutdown, 742 - .setsockopt = sock_no_setsockopt, 743 - .getsockopt = sock_no_getsockopt, 744 744 .sendmsg = unix_dgram_sendmsg, 745 745 .recvmsg = unix_dgram_recvmsg, 746 746 .mmap = sock_no_mmap, ··· 763 767 #endif 764 768 .listen = unix_listen, 765 769 .shutdown = unix_shutdown, 766 - .setsockopt = sock_no_setsockopt, 767 - .getsockopt = sock_no_getsockopt, 768 770 .sendmsg = unix_seqpacket_sendmsg, 769 771 .recvmsg = unix_seqpacket_recvmsg, 770 772 .mmap = sock_no_mmap,
-2
net/vmw_vsock/af_vsock.c
··· 1202 1202 .ioctl = sock_no_ioctl, 1203 1203 .listen = sock_no_listen, 1204 1204 .shutdown = vsock_shutdown, 1205 - .setsockopt = sock_no_setsockopt, 1206 - .getsockopt = sock_no_getsockopt, 1207 1205 .sendmsg = vsock_dgram_sendmsg, 1208 1206 .recvmsg = vsock_dgram_recvmsg, 1209 1207 .mmap = sock_no_mmap,