mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-26 04:07:45 +03:00
3112 ztest does not honor ZFS_DEBUG 3113 ztest should use watchpoints to protect frozen arc bufs 3114 some leaked nvlists in zfsdev_ioctl Reviewed by: Adam Leventhal <ahl@delphix.com> Reviewed by: Matt Amdur <Matt.Amdur@delphix.com> Reviewed by: George Wilson <george.wilson@delphix.com> Reviewed by: Christopher Siden <chris.siden@delphix.com> Approved by: Eric Schrock <eric.schrock@delphix.com> References: https://www.illumos.org/issues/3112 https://www.illumos.org/issues/3113 https://www.illumos.org/issues/3114 illumos/illumos-gate@cd1c8b85eb The /proc/self/cmd watchpoint interface is specific to Solaris. Therefore, the #3113 implementation was reworked to use the more portable mprotect(2) system call. When the pages are watched they are marked read-only for protection. Any write to the protected address range immediately trigger a SIGSEGV. The pages are marked writable again when they are unwatched. Ported-by: Brian Behlendorf <behlendorf1@llnl.gov> Issue #1489
This commit is contained in:
committed by
Brian Behlendorf
parent
03c6040bee
commit
498877baf5
@@ -1630,6 +1630,23 @@ spa_init(int mode)
|
||||
|
||||
spa_mode_global = mode;
|
||||
|
||||
#ifndef _KERNEL
|
||||
if (spa_mode_global != FREAD && dprintf_find_string("watch")) {
|
||||
struct sigaction sa;
|
||||
|
||||
sa.sa_flags = SA_SIGINFO;
|
||||
sigemptyset(&sa.sa_mask);
|
||||
sa.sa_sigaction = arc_buf_sigsegv;
|
||||
|
||||
if (sigaction(SIGSEGV, &sa, NULL) == -1) {
|
||||
perror("could not enable watchpoints: "
|
||||
"sigaction(SIGSEGV, ...) = ");
|
||||
} else {
|
||||
arc_watch = B_TRUE;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
fm_init();
|
||||
refcount_init();
|
||||
unique_init();
|
||||
|
||||
Reference in New Issue
Block a user