The branch stable/15 has been updated by kib:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=1d9c9fe8344969ea09b90105a0825e8105f4d9a9

commit 1d9c9fe8344969ea09b90105a0825e8105f4d9a9
Author:     Konstantin Belousov <[email protected]>
AuthorDate: 2026-08-19 02:27:46 +0000
Commit:     Konstantin Belousov <[email protected]>
CommitDate: 2026-08-26 00:44:10 +0000

    shmfd: consistently return size in 512 byte blocks for fstat(2) st_blocks
    
    (cherry picked from commit 3a1bf59d195ced99c0f69774969d7090d21f6097)
---
 lib/libsys/stat.2   | 8 ++++++--
 sys/kern/uipc_shm.c | 8 ++------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/lib/libsys/stat.2 b/lib/libsys/stat.2
index 7119fa797f0a..799f9bdbe1fc 100644
--- a/lib/libsys/stat.2
+++ b/lib/libsys/stat.2
@@ -271,10 +271,14 @@ be zero.
 .Pp
 For file descriptors referencing specific non-file objects,
 the field is type-specific.
+.Pp
 For POSIX shared memory segments
 .Pq see Xr shm_open 2 ,
-the block size is equal to
-the platform page size
+the block size is 512 bytes.
+For older versions of
+.Fx
+.Pq before 15.2 and 16.0
+the block size was equal to the platform page size
 .Pq Xr getpagesize 2 .
 .El
 .Pp
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index fa80eabc39a3..067a628fdab0 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -663,12 +663,8 @@ shm_stat(struct file *fp, struct stat *sb, struct ucred 
*active_cred)
        sb->st_dev = shm_dev_ino;
        sb->st_ino = shmfd->shm_ino;
        sb->st_nlink = shmfd->shm_object->ref_count;
-       if (shm_largepage(shmfd)) {
-               sb->st_blocks = shmfd->shm_object->size /
-                   (pagesizes[shmfd->shm_lp_psind] >> PAGE_SHIFT);
-       } else {
-               sb->st_blocks = shmfd->shm_pages;
-       }
+       sb->st_blocks = ptoa(shm_largepage(shmfd) ? shmfd->shm_object->size :
+           shmfd->shm_pages) / DEV_BSIZE;
 
        return (0);
 }

Reply via email to