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>] [day] [month] [year] [list]
Date:	Thu, 23 Feb 2012 23:40:05 +0000 (GMT)
From:	Anton Altaparmakov <>
To:	Linus Torvalds <>
cc:	Christoph Hellwig <>,
	Al Viro <>,,
Subject: [PATCH] Restore direct_io / truncate locking API

With kernel 3.1, Christoph removed i_alloc_sem and replaced it with calls 
(namely inode_dio_wait() and inode_dio_done()) which are 
EXPORT_SYMBOL_GPL() thus they cannot be used by non-GPL file systems and 
further inode_dio_wait() was pushed from notify_change() into the file 
system ->setattr() method but no non-GPL file system can make this call.

That means non-GPL file systems cannot exist any more unless they do not 
use any VFS functionality related to reading/writing as far as I can tell 
or at least as long as they want to implement direct i/o.

Both Linus and Al (and others) have said on LKML that this breakage of the
VFS API should not have happened and that the change was simply missed as
it was not documented in the change logs of the patches that did those 

This patch changes the two function exports in question to be 
EXPORT_SYMBOL() thus restoring the VFS API as it used to be - accessible 
for all modules.

Christoph, who introduced the two functions and exported them GPL-only is 
CC-ed on this patch to give him the opportunity to object to the symbols 
being changed in this manner if he did indeed intend them to be GPL-only 
and does not want them to become available to all modules.

Signed-off-by: Anton Altaparmakov <>
CC: Christoph Hellwig <>

diff linux/fs/direct-io.c.old linux/fs/direct-io.c
--- linux/fs/direct-io.c.old	2012-02-23 23:20:26.000000000 +0000
+++ linux/fs/direct-io.c	2012-02-23 23:20:46.000000000 +0000
@@ -173,7 +173,7 @@ void inode_dio_wait(struct inode *inode)
 	if (atomic_read(&inode->i_dio_count))
  * inode_dio_done - signal finish of a direct I/O requests
@@ -187,7 +187,7 @@ void inode_dio_done(struct inode *inode)
 	if (atomic_dec_and_test(&inode->i_dio_count))
 		wake_up_bit(&inode->i_state, __I_DIO_WAKEUP);
  * How many pages are in the queue?
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

Powered by blists - more mailing lists