[newlib-cygwin] Cygwin: return better inode numbers for block device entries in /proc/sys

Corinna Vinschen corinna@sourceware.org
Thu Aug 19 14:12:44 GMT 2021


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=ad35bfbb0f527c6217b7cd6070d62785fb7f0025

commit ad35bfbb0f527c6217b7cd6070d62785fb7f0025
Author: Corinna Vinschen <corinna@vinschen.de>
Date:   Thu Aug 19 16:08:34 2021 +0200

    Cygwin: return better inode numbers for block device entries in /proc/sys
    
    Commit 3434d35a64736f0b77a12f61784c2caa33ac44cf fixed a problem when
    accessing block devices via their /proc/sys/Device entries.  This
    changed the way stat info is generated for these devices, resulting
    in identical inode numbers for all block devices under /proc/sys/Device.
    
    This patch fixes that by faking a device number for these devices, just as
    before.
    
    Fixes: 3434d35a6473 ("Cygwin: Fix access to block devices below /proc/sys.")
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

Diff:
---
 winsup/cygwin/fhandler_raw.cc | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/winsup/cygwin/fhandler_raw.cc b/winsup/cygwin/fhandler_raw.cc
index 7c341d895..8d3314465 100644
--- a/winsup/cygwin/fhandler_raw.cc
+++ b/winsup/cygwin/fhandler_raw.cc
@@ -45,6 +45,8 @@ fhandler_dev_raw::fstat (struct stat *buf)
       else
 	buf->st_mode = S_IFBLK | STD_RBITS | STD_WBITS | S_IWGRP | S_IWOTH;
 
+      if (get_major () == DEV_SD_HIGHPART_END && get_minor () == 9999)
+	buf->st_ino = get_ino ();
       buf->st_uid = geteuid32 ();
       buf->st_gid = getegid32 ();
       buf->st_nlink = 1;


More information about the Cygwin-cvs mailing list