Properly handle read-only clusters in m_pullup(9).
authorbluhm <bluhm@openbsd.org>
Tue, 18 Jan 2022 12:38:21 +0000 (12:38 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 18 Jan 2022 12:38:21 +0000 (12:38 +0000)
commit2dffa17254d85b2bb8782ed4bf70825eafecbca0
tree0c64e506b33fe30a595dd0cf8272e706f6361120
parentbfa5fdb5f0a76cb47f36d53ec1ef502ba9eb90ce
Properly handle read-only clusters in m_pullup(9).

If the first mbuf of a chain in m_pullup is a cluster, check if the
cluster is read-only (shared or an external buffer).  If so, don't
touch it and create a new mbuf for the pullup data.

This restores original 4.4BSD m_pullup, that not only returned
contiguous mbuf data of the specified length, but also converted
read-only clusters into writeable memory.  The latter feature was
lost during some refactoring.

from ehrhardt@; tested by weerd@; OK stsp@ bluhm@ claudio@
sys/kern/uipc_mbuf.c