lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <bug-200753-13602@https.bugzilla.kernel.org/>
Date:   Tue, 07 Aug 2018 00:47:15 +0000
From:   bugzilla-daemon@...zilla.kernel.org
To:     linux-ext4@...nel.org
Subject: [Bug 200753] New: write I/O error for inode structure leads to
 operation failure without any warning or error

https://bugzilla.kernel.org/show_bug.cgi?id=200753

            Bug ID: 200753
           Summary: write I/O error for inode structure leads to operation
                    failure without any warning or error
           Product: File System
           Version: 2.5
    Kernel Version: 4.17.0-rc3+
          Hardware: All
                OS: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: ext4
          Assignee: fs_ext4@...nel-bugs.osdl.org
          Reporter: shehbazjaffer007@...il.com
        Regression: No

Created attachment 277725
  --> https://bugzilla.kernel.org/attachment.cgi?id=277725&action=edit
printAllBlocks.sh script that generates block trace of all blocks accessed

Hello!

Background
==========

I am performing block level Write I/O error injection on ext4 file system using
 device mapper. I try the following commands: truncate, chmod, chown, utimes,
symlink, creat. Each of these commands update the inode structure by writing to
the inode data structure on one of the inode blocks.

Observation
===========
If the underlying device returns an EIO error, the operation does not give any
warning or error either in the user space or in the logs, however the operation
fails to undergo completion.

Steps to Reproduce
==================

Create 2 identical QEMU disks, each of 1.5GB. in my case these are /dev/sdc
(backup disk) and /dev/sdb (primary disk). I create the image on backup disk
and record block trace there. I then copy the image from backup to primary
(using pv command) and replay the command by injecting block error on a
specific inode block.

1. please create 2 qemu images /dev/sdb (primary image) and /dev/sdc (backup
image)
2. please install pv command, compile dm-io.c with the Makefile attached.
please download all attached files in 1 folder, as some commands are helper
commands.
3. please run ./printAllBlocks.sh <cmd> where cmd is truncate, chmod, chown,
utimes, symlink, creat. this would print a list of blocks with READ/WRITE
operation. choose the inode block WRITE operation that is either the 3rd or 4th
last block to be written to disk. the block type can be verified using dumpe2fs
or debugfs command. In my disk image
4. now, with the target inode block number, run ./injectError.sh <cmd>
<errBlkNo> where cmd is one of the 6 commands mentioned above, and errBlkNo is
the inode block obtained in step 3.

5. analyse results:

truncate - fails to truncate the file size to 40960 bytes. the original size of
the file continues to remain the same, no error is reported in either syslog,
fsck or user space.

chmod - fails to correctly change the mode of the file to 777. the original
mode of the file continues (644 in my case), no error is reported in either
syslog, fsck or userspace.

chown - fails to correctly change the ownership of the file to shehbaz:shehbaz.
the original ownership of the file continues (root:root in my case), no error
is reported in either syslog, fsck or userspace.

utimes - fails to update last access and modification times to 1979.

symlink - while corrupting the target inode, no error is reported (this is okay
for the source path but here corrupting target inode leads to an unreported
error). a subsiquent ls on the created target says file system structure needs
cleaning.

creat -  fails when parent inode block update encounters a write I/O error. no
error is reported in userspace or kernel space.

Please find all programs attached for your reference.
Please let me know if any other details regarding setup is required to
reproduce the issue.

Thanks!

-- 
You are receiving this mail because:
You are watching the assignee of the bug.

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ