Showing error 1679

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: 1210
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 07:54:05 UTC


Source:

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        }
1206        if (err) {
1207                sockfd_put(so);
1208                return err;
1209        }
1210        return one_sock_name(name_return, svsk);
1211}
1212EXPORT_SYMBOL_GPL(svc_addsock);
1213
1214/*
1215 * Create socket for RPC service.
1216 */
1217static struct svc_xprt *svc_create_socket(struct svc_serv *serv,
1218                                          int protocol,
1219                                          struct sockaddr *sin, int len,
1220                                          int flags)
Show full sources