Showing error 1777

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: net/sunrpc/svcsock.c
Line in file: 1265
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

1235        if (protocol != IPPROTO_UDP && protocol != IPPROTO_TCP) {
1236                printk(KERN_WARNING "svc: only UDP and TCP "
1237                                "sockets supported\n");
1238                return ERR_PTR(-EINVAL);
1239        }
1240        type = (protocol == IPPROTO_UDP)? SOCK_DGRAM : SOCK_STREAM;
1241
1242        error = sock_create_kern(sin->sa_family, type, protocol, &sock);
1243        if (error < 0)
1244                return ERR_PTR(error);
1245
1246        svc_reclassify_socket(sock);
1247
1248        if (type == SOCK_STREAM)
1249                sock->sk->sk_reuse = 1;                /* allow address reuse */
1250        error = kernel_bind(sock, sin, len);
1251        if (error < 0)
1252                goto bummer;
1253
1254        newlen = len;
1255        error = kernel_getsockname(sock, newsin, &newlen);
1256        if (error < 0)
1257                goto bummer;
1258
1259        if (protocol == IPPROTO_TCP) {
1260                if ((error = kernel_listen(sock, 64)) < 0)
1261                        goto bummer;
1262        }
1263
1264        if ((svsk = svc_setup_socket(serv, sock, &error, flags)) != NULL) {
1265                svc_xprt_set_local(&svsk->sk_xprt, newsin, newlen);
1266                return (struct svc_xprt *)svsk;
1267        }
1268
1269bummer:
1270        dprintk("svc: svc_create_socket error = %d\n", -error);
1271        sock_release(sock);
1272        return ERR_PTR(error);
1273}
1274
1275/*
Show full sources