dax: Fix incorrect argument passed to xas_set_err()

The argument passed to xas_set_err() to indicate an error should be negative.
Otherwise, xas_error() will return 0, and grab_mapping_entry() will return the
found entry instead of 'SIGBUS' when the entry is not in fact valid.
This would result in problems in subsequent code paths.

Link: https://lore.kernel.org/r/20200729034436.24267-1-lihao2018.fnst@cn.fujitsu.com
Reviewed-by: Pankaj Gupta <pankaj.gupta.linux@gmail.com>
Signed-off-by: Hao Li <lihao2018.fnst@cn.fujitsu.com>
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
This commit is contained in:
Hao Li 2020-07-29 11:44:36 +08:00 committed by Vishal Verma
parent cbeb0310cf
commit 49688e654e

View File

@ -488,7 +488,7 @@ static void *grab_mapping_entry(struct xa_state *xas,
if (dax_is_conflict(entry)) if (dax_is_conflict(entry))
goto fallback; goto fallback;
if (!xa_is_value(entry)) { if (!xa_is_value(entry)) {
xas_set_err(xas, EIO); xas_set_err(xas, -EIO);
goto out_unlock; goto out_unlock;
} }