]> git.proxmox.com Git - mirror_spl-debian.git/blobdiff - include/sys/rwlock.h
Imported Upstream version 0.6.5.9
[mirror_spl-debian.git] / include / sys / rwlock.h
index 7e85f59e02f09bc2c978480d834fc8332df69c7f..c8ed223d4461c4b2ac7d1921aeec712c13fadf66 100644 (file)
@@ -83,7 +83,12 @@ rw_owner(krwlock_t *rwp)
 static inline int
 RW_READ_HELD(krwlock_t *rwp)
 {
-       return (spl_rwsem_is_locked(SEM(rwp)) && rw_owner(rwp) == NULL);
+       /*
+        * Linux 4.8 will set owner to 1 when read held instead of leave it
+        * NULL. So we check whether owner <= 1.
+        */
+       return (spl_rwsem_is_locked(SEM(rwp)) &&
+           (unsigned long)rw_owner(rwp) <= 1);
 }
 
 static inline int