diff options
Diffstat (limited to 'kernel/usermode_driver.c')
| -rw-r--r-- | kernel/usermode_driver.c | 21 | 
1 files changed, 15 insertions, 6 deletions
| diff --git a/kernel/usermode_driver.c b/kernel/usermode_driver.c index 0b35212ffc3d..bb7bb3b478ab 100644 --- a/kernel/usermode_driver.c +++ b/kernel/usermode_driver.c @@ -139,13 +139,22 @@ static void umd_cleanup(struct subprocess_info *info)  	struct umd_info *umd_info = info->data;  	/* cleanup if umh_setup() was successful but exec failed */ -	if (info->retval) { -		fput(umd_info->pipe_to_umh); -		fput(umd_info->pipe_from_umh); -		put_pid(umd_info->tgid); -		umd_info->tgid = NULL; -	} +	if (info->retval) +		umd_cleanup_helper(umd_info); +} + +/** + * umd_cleanup_helper - release the resources which were allocated in umd_setup + * @info: information about usermode driver + */ +void umd_cleanup_helper(struct umd_info *info) +{ +	fput(info->pipe_to_umh); +	fput(info->pipe_from_umh); +	put_pid(info->tgid); +	info->tgid = NULL;  } +EXPORT_SYMBOL_GPL(umd_cleanup_helper);  /**   * fork_usermode_driver - fork a usermode driver |