Page MenuHomeFreeBSD

D57726.diff
No OneTemporary

D57726.diff

diff --git a/sys/amd64/amd64/uio_machdep.c b/sys/amd64/amd64/uio_machdep.c
--- a/sys/amd64/amd64/uio_machdep.c
+++ b/sys/amd64/amd64/uio_machdep.c
@@ -57,13 +57,12 @@
int
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
- struct thread *td = curthread;
struct iovec *iov;
void *cp, *vaddr;
vm_offset_t page_offset;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
bool mapped;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
@@ -73,8 +72,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
mapped = false;
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
@@ -111,8 +109,7 @@
offset += cnt;
n -= cnt;
}
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/arm/arm/uio_machdep.c b/sys/arm/arm/uio_machdep.c
--- a/sys/arm/arm/uio_machdep.c
+++ b/sys/arm/arm/uio_machdep.c
@@ -56,13 +56,12 @@
int
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
- struct thread *td = curthread;
struct iovec *iov;
void *cp;
vm_offset_t page_offset;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
struct sf_buf *sf;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
@@ -72,8 +71,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
("%s: uio %p iovcnt underflow", __func__, uio));
@@ -102,7 +100,6 @@
offset += cnt;
n -= cnt;
}
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/arm64/arm64/uio_machdep.c b/sys/arm64/arm64/uio_machdep.c
--- a/sys/arm64/arm64/uio_machdep.c
+++ b/sys/arm64/arm64/uio_machdep.c
@@ -53,13 +53,12 @@
int
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
- struct thread *td = curthread;
struct iovec *iov;
void *cp, *vaddr;
vm_offset_t page_offset;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
bool mapped;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
@@ -69,8 +68,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
mapped = false;
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
@@ -107,7 +105,6 @@
offset += cnt;
n -= cnt;
}
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/i386/i386/uio_machdep.c b/sys/i386/i386/uio_machdep.c
--- a/sys/i386/i386/uio_machdep.c
+++ b/sys/i386/i386/uio_machdep.c
@@ -56,13 +56,12 @@
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
struct sf_buf *sf;
- struct thread *td = curthread;
struct iovec *iov;
void *cp;
vm_offset_t page_offset;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
("uiomove_fromphys: mode"));
@@ -71,8 +70,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
("%s: uio %p iovcnt underflow", __func__, uio));
@@ -103,8 +101,6 @@
offset += cnt;
n -= cnt;
}
-out:
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/kern/subr_uio.c b/sys/kern/subr_uio.c
--- a/sys/kern/subr_uio.c
+++ b/sys/kern/subr_uio.c
@@ -241,7 +241,7 @@
size_t cnt;
int error, newflags, save;
- save = error = 0;
+ error = 0;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
("uiomove: mode"));
@@ -264,6 +264,7 @@
save = curthread_pflags_set(newflags);
} else {
KASSERT(nofault == 0, ("uiomove: nofault"));
+ save = 0;
}
while (n > 0 && uio->uio_resid) {
@@ -291,8 +292,7 @@
n -= cnt;
}
out:
- if (save)
- curthread_pflags_restore(save);
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/powerpc/powerpc/uio_machdep.c b/sys/powerpc/powerpc/uio_machdep.c
--- a/sys/powerpc/powerpc/uio_machdep.c
+++ b/sys/powerpc/powerpc/uio_machdep.c
@@ -58,14 +58,13 @@
int
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
- struct thread *td = curthread;
struct iovec *iov;
void *cp;
vm_offset_t page_offset;
vm_page_t m;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
struct sf_buf *sf;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
@@ -75,8 +74,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
("%s: uio %p iovcnt underflow", __func__, uio));
@@ -108,7 +106,6 @@
offset += cnt;
n -= cnt;
}
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}
diff --git a/sys/riscv/riscv/uio_machdep.c b/sys/riscv/riscv/uio_machdep.c
--- a/sys/riscv/riscv/uio_machdep.c
+++ b/sys/riscv/riscv/uio_machdep.c
@@ -53,13 +53,12 @@
int
uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
{
- struct thread *td = curthread;
struct iovec *iov;
void *cp, *vaddr;
vm_offset_t page_offset;
size_t cnt;
int error = 0;
- int save = 0;
+ int save;
bool mapped;
KASSERT(uio->uio_rw == UIO_READ || uio->uio_rw == UIO_WRITE,
@@ -69,8 +68,7 @@
KASSERT(uio->uio_resid >= 0,
("%s: uio %p resid underflow", __func__, uio));
- save = td->td_pflags & TDP_DEADLKTREAT;
- td->td_pflags |= TDP_DEADLKTREAT;
+ save = curthread_pflags_set(TDP_DEADLKTREAT);
mapped = false;
while (n > 0 && uio->uio_resid) {
KASSERT(uio->uio_iovcnt > 0,
@@ -107,7 +105,6 @@
offset += cnt;
n -= cnt;
}
- if (save == 0)
- td->td_pflags &= ~TDP_DEADLKTREAT;
+ curthread_pflags_restore(save);
return (error);
}

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 16, 7:27 AM (6 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35129372
Default Alt Text
D57726.diff (6 KB)

Event Timeline