On 10/15/25 19:07, Liu Kui wrote:
diff --git a/fs/fuse/kio/pcs/pcs_map.c b/fs/fuse/kio/pcs/pcs_map.c
index 62b083b4947f..8baff296aaa7 100644
--- a/fs/fuse/kio/pcs/pcs_map.c
+++ b/fs/fuse/kio/pcs/pcs_map.c
@@ -1266,23 +1266,14 @@ void pcs_map_complete(struct pcs_map_entry *m, struct 
pcs_ioc_getmap *omap)
/* Atomically schedule map resolve and push ireq to wait completion */
  static void pcs_map_queue_resolve(struct pcs_map_entry * m, struct 
pcs_int_request *ireq, int direction)
+__releases(m->lock)
  {
        LIST_HEAD(l);
        int ret;
- DTRACE("enter m:%p, state:%x, ireq:%p dir:%d \n", m, m->state, ireq, direction);
-
-       spin_lock(&m->lock);
-       /* This should not happen unless aio_dio/fsync vs truncate race */
-       if (m->state & PCS_MAP_DEAD) {
-               spin_unlock(&m->lock);
+       assert_spin_locked(&m->lock);

This will crash when pcs_map_queue_resolve() is called from process_ireq_truncate().

https://bitbucket.org/virtuozzocore/vzkernel.vzs/src/09103657f3bbe0b06f89337e52190aa4159882a1/fs/fuse/kio/pcs/pcs_map.c#lines-2630



--
Best regards, Pavel Tikhomirov
Senior Software Developer, Virtuozzo.

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to