important NFS client patch for FreeBSD8.n

Rick Macklem rmacklem at uoguelph.ca
Mon Jan 10 22:22:56 UTC 2011


I just commited a patch (r217242) to head. Anyone who is using client
side NFS on FreeBSD8.n should apply this patch. It is also available at:
   http://people.freebsd.org/~rmacklem/krpc.patch

It fixes a problem where the kernel rpc assumes that 4 bytes of data
exists in the first mbuf without checking. If the data straddles multiple
mbufs, it uses garbage and then a typical case will wedge for a minute
or so until it times out and establishes a new TCP connection. It also
replaces m_pullup() with m_copydata(), since m_pullup() can fail for
rare cases when there is data available. (m_pullup() uses MGET(, M_DONTWAIT,)
which can fail when mbuf allocation is constrainted, for example.)

Thanks to john.gemignani at isilon.com for spotting this problem, rick


More information about the freebsd-stable mailing list