diff options
author | 2020-04-16 14:35:16 +0300 | |
---|---|---|
committer | 2020-04-16 14:35:16 +0300 | |
commit | 2b703bbda2713fd2a7d98029ea6c44f9c3159f34 (patch) | |
tree | 00aabbb35186a4541ccccf89dead04e251d0541d /lib/xarray.c | |
parent | drm/i915: HDCP: fix Ri prime check done during link check (diff) | |
parent | Linux 5.7-rc1 (diff) | |
download | linux-dev-2b703bbda2713fd2a7d98029ea6c44f9c3159f34.tar.xz linux-dev-2b703bbda2713fd2a7d98029ea6c44f9c3159f34.zip |
Merge drm/drm-next into drm-intel-next-queued
Backmerging in order to pull "topic/phy-compliance".
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Diffstat (limited to 'lib/xarray.c')
-rw-r--r-- | lib/xarray.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/lib/xarray.c b/lib/xarray.c index 1d9fab7db8da..e9e641d3c0c3 100644 --- a/lib/xarray.c +++ b/lib/xarray.c @@ -970,7 +970,7 @@ void xas_pause(struct xa_state *xas) xas->xa_node = XAS_RESTART; if (node) { - unsigned int offset = xas->xa_offset; + unsigned long offset = xas->xa_offset; while (++offset < XA_CHUNK_SIZE) { if (!xa_is_sibling(xa_entry(xas->xa, node, offset))) break; @@ -1208,6 +1208,8 @@ void *xas_find_marked(struct xa_state *xas, unsigned long max, xa_mark_t mark) } entry = xa_entry(xas->xa, xas->xa_node, xas->xa_offset); + if (!entry && !(xa_track_free(xas->xa) && mark == XA_FREE_MARK)) + continue; if (!xa_is_node(entry)) return entry; xas->xa_node = xa_to_node(entry); @@ -1836,10 +1838,11 @@ static bool xas_sibling(struct xa_state *xas) struct xa_node *node = xas->xa_node; unsigned long mask; - if (!node) + if (!IS_ENABLED(CONFIG_XARRAY_MULTI) || !node) return false; mask = (XA_CHUNK_SIZE << node->shift) - 1; - return (xas->xa_index & mask) > (xas->xa_offset << node->shift); + return (xas->xa_index & mask) > + ((unsigned long)xas->xa_offset << node->shift); } /** |