On 2025-02-22 07:25:43 [+0900], Sergey Senozhatsky wrote: > index 03710d71d022..1288a4120855 100644 > --- a/mm/zsmalloc.c > +++ b/mm/zsmalloc.c > @@ -1377,6 +1377,135 @@ void zs_unmap_object(struct zs_pool *pool, unsigned long handle) > } > EXPORT_SYMBOL_GPL(zs_unmap_object); > > +void *zs_obj_read_begin(struct zs_pool *pool, unsigned long handle, > + void *local_copy) > +{ > + struct zspage *zspage; > + struct zpdesc *zpdesc; > + unsigned long obj, off; > + unsigned int obj_idx; > + struct size_class *class; > + void *addr; > + > + WARN_ON(in_interrupt()); This macro is deprecated. Could you come up with something else like !in_task() if needed? > + /* Guarantee we can get zspage from handle safely */ > + read_lock(&pool->lock); > + obj = handle_to_obj(handle); > + obj_to_location(obj, &zpdesc, &obj_idx); > + zspage = get_zspage(zpdesc); … Sebastian