Hello.

In the traverse_impl() function we can find this call:

        if (!(flags & TRAVERSE_PREFETCH) ||
            0 == taskq_dispatch(system_taskq, traverse_prefetch_thread,
            &td, TQ_NOQUEUE))
                pd.pd_exited = B_TRUE;

Which should call the traverse_prefetch_thread() function with td
argument from a separate thread. This doesn't look safe, as td is
allocated on the stack at the begining of traverse_impl() and won't be
accessible from taskq thread.

Is my understanding correct?

-- 
Pawel Jakub Dawidek                       http://www.wheel.pl
pjd at FreeBSD.org                           http://www.FreeBSD.org
FreeBSD committer                         Am I Evil? Yes, I Am!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 187 bytes
Desc: not available
URL: 
<http://mail.opensolaris.org/pipermail/zfs-code/attachments/20090730/f38f18e7/attachment.bin>

Reply via email to