Showing error 801

User: Jiri Slaby
Error type: Memory Leak
Error type description: There the code omits to free some allocated memory
File location: net/sunrpc/xprtsock.c
Line in file: 1921
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:26:27 UTC


Source:

1891        .destroy                = xs_destroy,
1892        .print_stats                = xs_udp_print_stats,
1893};
1894
1895static struct rpc_xprt_ops xs_tcp_ops = {
1896        .reserve_xprt                = xprt_reserve_xprt,
1897        .release_xprt                = xs_tcp_release_xprt,
1898        .rpcbind                = rpcb_getport_async,
1899        .set_port                = xs_set_port,
1900        .connect                = xs_tcp_connect,
1901        .buf_alloc                = rpc_malloc,
1902        .buf_free                = rpc_free,
1903        .send_request                = xs_tcp_send_request,
1904        .set_retrans_timeout        = xprt_set_retrans_timeout_def,
1905        .close                        = xs_tcp_shutdown,
1906        .destroy                = xs_destroy,
1907        .print_stats                = xs_tcp_print_stats,
1908};
1909
1910static struct rpc_xprt *xs_setup_xprt(struct xprt_create *args,
1911                                      unsigned int slot_table_size)
1912{
1913        struct rpc_xprt *xprt;
1914        struct sock_xprt *new;
1915
1916        if (args->addrlen > sizeof(xprt->addr)) {
1917                dprintk("RPC:       xs_setup_xprt: address too large\n");
1918                return ERR_PTR(-EBADF);
1919        }
1920
1921        new = kzalloc(sizeof(*new), GFP_KERNEL);
1922        if (new == NULL) {
1923                dprintk("RPC:       xs_setup_xprt: couldn't allocate "
1924                                "rpc_xprt\n");
1925                return ERR_PTR(-ENOMEM);
1926        }
1927        xprt = &new->xprt;
1928
1929        xprt->max_reqs = slot_table_size;
1930        xprt->slot = kcalloc(xprt->max_reqs, sizeof(struct rpc_rqst), GFP_KERNEL);
1931        if (xprt->slot == NULL) {
Show full sources