summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/alpha/alpha/uio_machdep.c13
-rw-r--r--sys/amd64/amd64/uio_machdep.c13
-rw-r--r--sys/arm/arm/uio_machdep.c13
-rw-r--r--sys/i386/i386/uio_machdep.c13
-rw-r--r--sys/ia64/ia64/uio_machdep.c13
-rw-r--r--sys/kern/kern_lock.c6
-rw-r--r--sys/kern/kern_subr.c13
-rw-r--r--sys/powerpc/aim/uio_machdep.c13
-rw-r--r--sys/powerpc/powerpc/uio_machdep.c13
-rw-r--r--sys/sparc64/sparc64/uio_machdep.c13
-rw-r--r--sys/sys/proc.h2
-rw-r--r--sys/ufs/ffs/ffs_rawread.c4
12 files changed, 41 insertions, 88 deletions
diff --git a/sys/alpha/alpha/uio_machdep.c b/sys/alpha/alpha/uio_machdep.c
index 1bcc74c..656c5b6 100644
--- a/sys/alpha/alpha/uio_machdep.c
+++ b/sys/alpha/alpha/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -119,10 +117,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/amd64/amd64/uio_machdep.c b/sys/amd64/amd64/uio_machdep.c
index 63057b7..dfa11ab 100644
--- a/sys/amd64/amd64/uio_machdep.c
+++ b/sys/amd64/amd64/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -118,10 +116,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/arm/arm/uio_machdep.c b/sys/arm/arm/uio_machdep.c
index 5b9a736..2fe374f 100644
--- a/sys/arm/arm/uio_machdep.c
+++ b/sys/arm/arm/uio_machdep.c
@@ -75,10 +75,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -122,10 +120,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/i386/i386/uio_machdep.c b/sys/i386/i386/uio_machdep.c
index 6267c6c..5e32ad9 100644
--- a/sys/i386/i386/uio_machdep.c
+++ b/sys/i386/i386/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -119,10 +117,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/ia64/ia64/uio_machdep.c b/sys/ia64/ia64/uio_machdep.c
index 71da287..b6241b9 100644
--- a/sys/ia64/ia64/uio_machdep.c
+++ b/sys/ia64/ia64/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -119,10 +117,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/kern/kern_lock.c b/sys/kern/kern_lock.c
index 59f60ab..7d90db5 100644
--- a/sys/kern/kern_lock.c
+++ b/sys/kern/kern_lock.c
@@ -251,16 +251,14 @@ debuglockmgr(lkp, flags, interlkp, td, name, file, line)
* while there is an exclusive lock holder or while an
* exclusive lock request or upgrade request is in progress.
*
- * However, if TDF_DEADLKTREAT is set, we override exclusive
+ * However, if TDP_DEADLKTREAT is set, we override exclusive
* lock requests or upgrade requests ( but not the exclusive
* lock itself ).
*/
if (lkp->lk_lockholder != thr) {
lockflags = LK_HAVE_EXCL;
- mtx_lock_spin(&sched_lock);
- if (td != NULL && !(td->td_flags & TDF_DEADLKTREAT))
+ if (td != NULL && !(td->td_pflags & TDP_DEADLKTREAT))
lockflags |= LK_WANT_EXCL | LK_WANT_UPGRADE;
- mtx_unlock_spin(&sched_lock);
error = acquire(&lkp, extflags, lockflags);
if (error)
break;
diff --git a/sys/kern/kern_subr.c b/sys/kern/kern_subr.c
index cee2492..880b5ee 100644
--- a/sys/kern/kern_subr.c
+++ b/sys/kern/kern_subr.c
@@ -140,10 +140,8 @@ uiomove(void *cp, int n, struct uio *uio)
("uiomove proc"));
if (td) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
@@ -187,11 +185,8 @@ uiomove(void *cp, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/powerpc/aim/uio_machdep.c b/sys/powerpc/aim/uio_machdep.c
index 1c27496..bd1663f 100644
--- a/sys/powerpc/aim/uio_machdep.c
+++ b/sys/powerpc/aim/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -118,10 +116,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/powerpc/powerpc/uio_machdep.c b/sys/powerpc/powerpc/uio_machdep.c
index 1c27496..bd1663f 100644
--- a/sys/powerpc/powerpc/uio_machdep.c
+++ b/sys/powerpc/powerpc/uio_machdep.c
@@ -71,10 +71,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -118,10 +116,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/sparc64/sparc64/uio_machdep.c b/sys/sparc64/sparc64/uio_machdep.c
index b096049..8aef4fa 100644
--- a/sys/sparc64/sparc64/uio_machdep.c
+++ b/sys/sparc64/sparc64/uio_machdep.c
@@ -77,10 +77,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
KASSERT(uio->uio_segflg != UIO_USERSPACE || uio->uio_td == curthread,
("uiomove_fromphys proc"));
if (td != NULL) {
- mtx_lock_spin(&sched_lock);
- save = td->td_flags & TDF_DEADLKTREAT;
- td->td_flags |= TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
+ save = td->td_pflags & TDP_DEADLKTREAT;
+ td->td_pflags |= TDP_DEADLKTREAT;
}
while (n > 0 && uio->uio_resid) {
iov = uio->uio_iov;
@@ -133,10 +131,7 @@ uiomove_fromphys(vm_page_t ma[], vm_offset_t offset, int n, struct uio *uio)
n -= cnt;
}
out:
- if (td != NULL && save == 0) {
- mtx_lock_spin(&sched_lock);
- td->td_flags &= ~TDF_DEADLKTREAT;
- mtx_unlock_spin(&sched_lock);
- }
+ if (td != NULL && save == 0)
+ td->td_pflags &= ~TDP_DEADLKTREAT;
return (error);
}
diff --git a/sys/sys/proc.h b/sys/sys/proc.h
index 3a074dd..a418bec 100644
--- a/sys/sys/proc.h
+++ b/sys/sys/proc.h
@@ -355,7 +355,6 @@ struct thread {
#define TDF_NEEDSIGCHK 0x020000 /* Thread may need signal delivery. */
#define TDF_UMTXWAKEUP 0x080000 /* Libthr thread must not sleep on a umtx. */
#define TDF_THRWAKEUP 0x100000 /* Libthr thread must not suspend itself. */
-#define TDF_DEADLKTREAT 0x800000 /* Lock aquisition - deadlock treatment. */
/* "Private" flags kept in td_pflags: */
#define TDP_OLDMASK 0x0001 /* Need to restore mask after suspend. */
@@ -364,6 +363,7 @@ struct thread {
#define TDP_UPCALLING 0x0008 /* This thread is doing an upcall. */
#define TDP_COWINPROGRESS 0x0010 /* Snapshot copy-on-write in progress. */
#define TDP_ALTSTACK 0x0020 /* Have alternate signal stack. */
+#define TDP_DEADLKTREAT 0x0040 /* Lock aquisition - deadlock treatment. */
#define TDP_SA 0x0080 /* A scheduler activation based thread. */
#define TDI_SUSPENDED 0x0001 /* On suspension queue. */
diff --git a/sys/ufs/ffs/ffs_rawread.c b/sys/ufs/ffs/ffs_rawread.c
index 3dcb33e..fcc6193 100644
--- a/sys/ufs/ffs/ffs_rawread.c
+++ b/sys/ufs/ffs/ffs_rawread.c
@@ -436,8 +436,8 @@ ffs_rawread(struct vnode *vp,
uio->uio_iovcnt == 1 &&
uio->uio_segflg == UIO_USERSPACE &&
uio->uio_resid == uio->uio_iov->iov_len &&
- (((uio->uio_td != NULL) ? uio->uio_td : curthread)->td_flags &
- TDF_DEADLKTREAT) == 0) {
+ (((uio->uio_td != NULL) ? uio->uio_td : curthread)->td_pflags &
+ TDP_DEADLKTREAT) == 0) {
int secsize; /* Media sector size */
off_t filebytes; /* Bytes left of file */
int blockbytes; /* Bytes left of file in full blocks */
OpenPOWER on IntegriCloud