From patchwork Tue Apr 12 01:32:50 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Oops when calling fsync on read-only file-system Date: Mon, 11 Apr 2011 15:32:50 -0000 From: Reuben Dowle X-Patchwork-Id: 90687 Message-Id: <70F6AAAFDC054F41B9994A9BCD3DF64E1284E165@exch01-aklnz.MARINE.NET.INT> To: On my system, calling the fsync system call on any file in a UBI file-system that is mounted read-only leads to a kernel oops. Our system is running a customise version of 2.6.31, but as far as I can see (without testing which is not possible due to extensive vendor customisation of .31 kernel version), the current git branch also contains this bug. I have created a patch against 2.6.31 that fixes the problem in my system. Perhaps someone could test on latest kernel version. Signed-off-by: Reuben Dowle --- --- --- linux-2.6.31.orig/fs/ubifs/io.c 2009-09-10 10:13:59.000000000 +1200 +++ linux-2.6.31/fs/ubifs/io.c 2011-04-11 15:43:50.026527002 +1200 @@ -916,6 +916,14 @@ { int i, err = 0; + /* If this is a read-only mount, write buffers will be null + * Skip the sync, returning success (even though this is an invalid operation + * on a read-only file-system, return success because all data on flash + * is up to date) + */ + if(!c->jheads) + return 0; + for (i = 0; i < c->jhead_cnt; i++) { struct ubifs_wbuf *wbuf = &c->jheads[i].wbuf;