diff options
Diffstat (limited to 'net/sunrpc/rpc_pipe.c')
| -rw-r--r-- | net/sunrpc/rpc_pipe.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c index 9b9ea504556..a2f1893bde5 100644 --- a/net/sunrpc/rpc_pipe.c +++ b/net/sunrpc/rpc_pipe.c @@ -828,8 +828,7 @@ init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)  {  	struct rpc_inode *rpci = (struct rpc_inode *) foo; -	if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == -	    SLAB_CTOR_CONSTRUCTOR) { +	if (flags & SLAB_CTOR_CONSTRUCTOR) {  		inode_init_once(&rpci->vfs_inode);  		rpci->private = NULL;  		rpci->nreaders = 0; @@ -846,6 +845,8 @@ init_once(void * foo, struct kmem_cache * cachep, unsigned long flags)  int register_rpc_pipefs(void)  { +	int err; +  	rpc_inode_cachep = kmem_cache_create("rpc_inode_cache",  				sizeof(struct rpc_inode),  				0, (SLAB_HWCACHE_ALIGN|SLAB_RECLAIM_ACCOUNT| @@ -853,7 +854,12 @@ int register_rpc_pipefs(void)  				init_once, NULL);  	if (!rpc_inode_cachep)  		return -ENOMEM; -	register_filesystem(&rpc_pipe_fs_type); +	err = register_filesystem(&rpc_pipe_fs_type); +	if (err) { +		kmem_cache_destroy(rpc_inode_cachep); +		return err; +	} +  	return 0;  }  | 
