Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F162638516
D57726.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
6 KB
Referenced Files
None
Subscribers
None
D57726.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D57726: sys: use curthread_pflags_set/restore to manage TDP_DEADLKTREAT for uio
Attached
Detach File
Event Timeline
Log In to Comment