summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>2000-11-12 14:51:15 +0000
committerdg <dg@FreeBSD.org>2000-11-12 14:51:15 +0000
commitb529eb36e40512e783c66a0db4c4a68adbcb1980 (patch)
tree9df3fc76ac0016a03f367548dc48f4e1fd01716a
parent3110b2627a69ce91acb6a45982516ff0a7957711 (diff)
downloadFreeBSD-src-b529eb36e40512e783c66a0db4c4a68adbcb1980.zip
FreeBSD-src-b529eb36e40512e783c66a0db4c4a68adbcb1980.tar.gz
Fixed a certain panic on IO error in sendfile(): Page must be set PG_BUSY
before calling vm_page_free() on it.
-rw-r--r--sys/kern/uipc_syscalls.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index 83ddc35..ae7b7e9 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -1599,8 +1599,10 @@ retry_lookup:
*/
if (pg->wire_count == 0 && pg->valid == 0 &&
pg->busy == 0 && !(pg->flags & PG_BUSY) &&
- pg->hold_count == 0)
+ pg->hold_count == 0) {
+ vm_page_busy(pg);
vm_page_free(pg);
+ }
sbunlock(&so->so_snd);
goto done;
}
OpenPOWER on IntegriCloud