On 16 September 2010 11:56, Dag-Erling Smorgrav <d...@freebsd.org> wrote: > Author: des > Date: Thu Sep 16 07:56:34 2010 > New Revision: 212723 > URL: http://svn.freebsd.org/changeset/base/212723 > > Log: > Implement proc/$$/environment. > [...]
> /* > * Filler function for proc/pid/environ > */ > static int > linprocfs_doprocenviron(PFS_FILL_ARGS) > { > + int ret; > > - sbuf_printf(sb, "doprocenviron\n%c", '\0'); > - return (0); > + PROC_LOCK(p); With this change I observe the following sleepable after non-sleepable: 1st 0xffffff000290b558 process lock (process lock) @ /usr/src/sys/modules/linprocfs/../../compat/linprocfs/linprocfs.c:1049 2nd 0xffffff00028f8848 user map (user map) @ /usr/src/sys/vm/vm_map.c:3525 KDB: stack backtrace: db_trace_self_wrapper() at db_trace_self_wrapper+0x2a _witness_debugger() at _witness_debugger+0x2e witness_checkorder() at witness_checkorder+0x807 _sx_slock() at _sx_slock+0x55 vm_map_lookup() at vm_map_lookup+0x55 vm_fault() at vm_fault+0x113 proc_rwmem() at proc_rwmem+0x7a linprocfs_doprocenviron() at linprocfs_doprocenviron+0x122 pfs_read() at pfs_read+0x45b vn_read() at vn_read+0x256 dofileread() at dofileread+0xa1 kern_readv() at kern_readv+0x60 read() at read+0x55 syscallenter() at syscallenter+0x1aa syscall() at syscall+0x4c Xfast_syscall() at Xfast_syscall+0xe2 --- syscall (3, FreeBSD ELF64, read), rip = 0x80074134c, rsp = 0x7fffffffe9c8, rbp = 0 --- > + > + if ((ret = p_cansee(td, p)) != 0) { > + PROC_UNLOCK(p); > + return ret; > + } > + > + ret = linprocfs_doargv(td, p, sb, ps_string_env); > + PROC_UNLOCK(p); > + return (ret); > } _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"