Merge tag 'xarray-5.18a' of git://git.infradead.org/users/willy/xarray
Pull xarray fixes from Matthew Wilcox: "Syzbot found a nasty race between large page splitting and page lookup. Details in the commit log, but fortunately it has a reliable reproducer. I thought it better to send this one to you straight away. Also fix the test suite build for kmem_cache_alloc_lru()" * tag 'xarray-5.18a' of git://git.infradead.org/users/willy/xarray: XArray: Disallow sibling entries of nodes tools: Add kmem_cache_alloc_lru()
This commit is contained in:
@ -207,6 +207,8 @@ static void *xas_descend(struct xa_state *xas, struct xa_node *node)
|
||||
if (xa_is_sibling(entry)) {
|
||||
offset = xa_to_sibling(entry);
|
||||
entry = xa_entry(xas->xa, node, offset);
|
||||
if (node->shift && xa_is_node(entry))
|
||||
entry = XA_RETRY_ENTRY;
|
||||
}
|
||||
|
||||
xas->xa_offset = offset;
|
||||
|
@ -28,7 +28,13 @@ static inline void *kzalloc(size_t size, gfp_t gfp)
|
||||
return kmalloc(size, gfp | __GFP_ZERO);
|
||||
}
|
||||
|
||||
void *kmem_cache_alloc(struct kmem_cache *cachep, int flags);
|
||||
struct list_lru;
|
||||
|
||||
void *kmem_cache_alloc_lru(struct kmem_cache *cachep, struct list_lru *, int flags);
|
||||
static inline void *kmem_cache_alloc(struct kmem_cache *cachep, int flags)
|
||||
{
|
||||
return kmem_cache_alloc_lru(cachep, NULL, flags);
|
||||
}
|
||||
void kmem_cache_free(struct kmem_cache *cachep, void *objp);
|
||||
|
||||
struct kmem_cache *kmem_cache_create(const char *name, unsigned int size,
|
||||
|
@ -25,7 +25,8 @@ struct kmem_cache {
|
||||
void (*ctor)(void *);
|
||||
};
|
||||
|
||||
void *kmem_cache_alloc(struct kmem_cache *cachep, int gfp)
|
||||
void *kmem_cache_alloc_lru(struct kmem_cache *cachep, struct list_lru *lru,
|
||||
int gfp)
|
||||
{
|
||||
void *p;
|
||||
|
||||
|
Reference in New Issue
Block a user