tmpfs_getattr(): Only take vm_object lock on 32bit machines

Torn reads are only possible for 32bit arches.

Requested by:	mjg
Reviewed by:	mjg, markj
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D37725
This commit is contained in:
Konstantin Belousov 2022-12-17 13:03:32 +02:00
parent 3249449190
commit 4d903a1a74

View file

@ -491,7 +491,6 @@ tmpfs_getattr(struct vop_getattr_args *v)
{
struct vnode *vp = v->a_vp;
struct vattr *vap = v->a_vap;
vm_object_t obj;
struct tmpfs_node *node;
node = VP_TO_TMPFS_NODE(vp);
@ -516,10 +515,15 @@ tmpfs_getattr(struct vop_getattr_args *v)
vap->va_rdev = (vp->v_type == VBLK || vp->v_type == VCHR) ?
node->tn_rdev : NODEV;
if (vp->v_type == VREG) {
obj = node->tn_reg.tn_aobj;
#ifdef __ILP32__
vm_object_t obj = node->tn_reg.tn_aobj;
VM_OBJECT_RLOCK(obj);
#endif
vap->va_bytes = ptoa(node->tn_reg.tn_pages);
#ifdef __ILP32__
VM_OBJECT_RUNLOCK(obj);
#endif
} else {
vap->va_bytes = node->tn_size;
}