| From a2a4dc494a7b7135f460e38e788c4a58f65e4ac3 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org> |
| Date: Thu, 3 Apr 2014 21:55:37 +0200 |
| Subject: fs: Don't return 0 from get_anon_bdev |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: =?UTF-8?q?Thomas=20B=C3=A4chler?= <thomas@archlinux.org> |
| |
| commit a2a4dc494a7b7135f460e38e788c4a58f65e4ac3 upstream. |
| |
| Commit 9e30cc9595303b27b48 removed an internal mount. This |
| has the side-effect that rootfs now has FSID 0. Many |
| userspace utilities assume that st_dev in struct stat |
| is never 0, so this change breaks a number of tools in |
| early userspace. |
| |
| Since we don't know how many userspace programs are affected, |
| make sure that FSID is at least 1. |
| |
| References: http://article.gmane.org/gmane.linux.kernel/1666905 |
| References: http://permalink.gmane.org/gmane.linux.utilities.util-linux-ng/8557 |
| Signed-off-by: Thomas Bรคchler <thomas@archlinux.org> |
| Acked-by: Tejun Heo <tj@kernel.org> |
| Acked-by: H. Peter Anvin <hpa@zytor.com> |
| Tested-by: Alexandre Demers <alexandre.f.demers@gmail.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/super.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/fs/super.c |
| +++ b/fs/super.c |
| @@ -802,7 +802,10 @@ void emergency_remount(void) |
| |
| static DEFINE_IDA(unnamed_dev_ida); |
| static DEFINE_SPINLOCK(unnamed_dev_lock);/* protects the above */ |
| -static int unnamed_dev_start = 0; /* don't bother trying below it */ |
| +/* Many userspace utilities consider an FSID of 0 invalid. |
| + * Always return at least 1 from get_anon_bdev. |
| + */ |
| +static int unnamed_dev_start = 1; |
| |
| int get_anon_bdev(dev_t *p) |
| { |