diff options
author | dg <dg@FreeBSD.org> | 2000-11-12 14:51:15 +0000 |
---|---|---|
committer | dg <dg@FreeBSD.org> | 2000-11-12 14:51:15 +0000 |
commit | b529eb36e40512e783c66a0db4c4a68adbcb1980 (patch) | |
tree | 9df3fc76ac0016a03f367548dc48f4e1fd01716a | |
parent | 3110b2627a69ce91acb6a45982516ff0a7957711 (diff) | |
download | FreeBSD-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.c | 4 |
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; } |