mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-01-25 10:12:13 +03:00
Remove unsafe timer_pending() check in taskq_cancel_id() that created a race where: - Timer expires and timer_pending() returns FALSE - task_done() frees task with tqent_func = NULL - Timer callback executes and queues freed task - Worker thread crashes executing NULL function Always call timer_delete_sync() unconditionally to ensure timer callback completes before task is freed. Reliably reproducible by injecting mdelay(10) after setting CANCEL flag to widen the race window, combined with frequent task cancellations (e.g., snapshot automount expiry). Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Ameer Hamza <ahamza@ixsystems.com> Closes #17942 |
||
|---|---|---|
| .. | ||
| README.md | ||
| spl-atomic.c | ||
| spl-condvar.c | ||
| spl-cred.c | ||
| spl-err.c | ||
| spl-generic.c | ||
| spl-kmem-cache.c | ||
| spl-kmem.c | ||
| spl-kstat.c | ||
| spl-proc.c | ||
| spl-procfs-list.c | ||
| spl-shrinker.c | ||
| spl-taskq.c | ||
| spl-thread.c | ||
| spl-trace.c | ||
| spl-tsd.c | ||
| spl-vmem.c | ||
| spl-xdr.c | ||
| spl-zlib.c | ||
| spl-zone.c | ||
| THIRDPARTYLICENSE.gplv2 | ||
| THIRDPARTYLICENSE.gplv2.descrip | ||
The Solaris Porting Layer, SPL, is a Linux kernel module which provides a compatibility layer used by the OpenZFS project.
Installation
The latest version of the SPL is maintained as part of this repository. Only when building ZFS version 0.7.x or earlier must an external SPL release be used. These releases can be found at:
- Version 0.7.x: https://github.com/zfsonlinux/spl/tree/spl-0.7-release
- Version 0.6.5.x: https://github.com/zfsonlinux/spl/tree/spl-0.6.5-release
Release
The SPL is released under a GPLv2 license.
For more details see the NOTICE and THIRDPARTYLICENSE files; UCRL-CODE-235197