Crash in __proc_lnet_portal_rotor. memdup_user_nul returns an ERR_PTR
on error, not a NULL pointer. IS_ERR and PTR_ERR functions have to be
used to check and return the correct error code. The fix has been
applied in other locations having the wrong check.
Fixes:
67af976c806 ("LU-14428 libcfs: discard cfs_trace_copyin_string()"
Signed-off-by: Cyril Bordage <cbordage@whamcloud.com>
Change-Id: I1fabf2499b6bbee7b94a2f802fbcbd9270d901b3
Reviewed-on: https://review.whamcloud.com/44091
Reviewed-by: John L. Hammond <jhammond@whamcloud.com>
Tested-by: jenkins <devops@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: James Simmons <jsimmons@infradead.org>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
}
} else {
tmpstr = memdup_user_nul(buffer, nob);
- if (!tmpstr)
- return -ENOMEM;
+ if (IS_ERR(tmpstr))
+ return PTR_ERR(tmpstr);
rc = libcfs_debug_str2mask(mask, strim(tmpstr), is_subsys);
/* Always print LBUG/LASSERT to console, so keep this mask */
int rc;
str = memdup_user_nul(usr_str, usr_str_nob);
- if (!str)
- return -ENOMEM;
+ if (IS_ERR(str))
+ return PTR_ERR(str);
path = strim(str);
if (path[0] != '/')
int rc;
str = memdup_user_nul(usr_str, usr_str_nob);
- if (!str)
- return -ENOMEM;
+ if (IS_ERR(str))
+ return PTR_ERR(str);
rc = cfs_trace_daemon_command(strim(str));
kfree(str);
}
buf = memdup_user_nul(buffer, nob);
- if (!buf)
- return -ENOMEM;
+ if (IS_ERR(buf))
+ return PTR_ERR(buf);
tmp = strim(buf);