Showing error 1776

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: 1195
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 20:24:52 UTC


Source:

1165        return svsk;
1166}
1167
1168int svc_addsock(struct svc_serv *serv,
1169                int fd,
1170                char *name_return)
1171{
1172        int err = 0;
1173        struct socket *so = sockfd_lookup(fd, &err);
1174        struct svc_sock *svsk = NULL;
1175
1176        if (!so)
1177                return err;
1178        if (so->sk->sk_family != AF_INET)
1179                err =  -EAFNOSUPPORT;
1180        else if (so->sk->sk_protocol != IPPROTO_TCP &&
1181            so->sk->sk_protocol != IPPROTO_UDP)
1182                err =  -EPROTONOSUPPORT;
1183        else if (so->state > SS_UNCONNECTED)
1184                err = -EISCONN;
1185        else {
1186                if (!try_module_get(THIS_MODULE))
1187                        err = -ENOENT;
1188                else
1189                        svsk = svc_setup_socket(serv, so, &err,
1190                                                SVC_SOCK_DEFAULTS);
1191                if (svsk) {
1192                        struct sockaddr_storage addr;
1193                        struct sockaddr *sin = (struct sockaddr *)&addr;
1194                        int salen;
1195                        if (kernel_getsockname(svsk->sk_sock, sin, &salen) == 0)
1196                                svc_xprt_set_local(&svsk->sk_xprt, sin, salen);
1197                        clear_bit(XPT_TEMP, &svsk->sk_xprt.xpt_flags);
1198                        spin_lock_bh(&serv->sv_lock);
1199                        list_add(&svsk->sk_xprt.xpt_list, &serv->sv_permsocks);
1200                        spin_unlock_bh(&serv->sv_lock);
1201                        svc_xprt_received(&svsk->sk_xprt);
1202                        err = 0;
1203                } else
1204                        module_put(THIS_MODULE);
1205        }
Show full sources