[CRIU] [RFC PATCH 1/6] reserve the extra room in fstypes[]
Oleg Nesterov
oleg at redhat.com
Fri Mar 27 10:55:45 PDT 2015
Preparation. Enlarge fstypes[] to make it possible to add the new
fstype's dynamically.
This means ths find_fstype_by_name() and decode_fstype() need the
additional ->name == NULL check to terminate the search.
Also change them to start with "i == 1", we rely on the fact that
fstypes[0] is FSTYPE__UNSUPPORTED anyway.
Signed-off-by: Oleg Nesterov <oleg at redhat.com>
---
mount.c | 26 +++++++++++++++++++-------
1 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/mount.c b/mount.c
index 021c6e3..ff2bce5 100644
--- a/mount.c
+++ b/mount.c
@@ -1033,7 +1033,7 @@ out:
return ret;
}
-static struct fstype fstypes[] = {
+static struct fstype fstypes[32] = {
{
.name = "unsupported",
.code = FSTYPE__UNSUPPORTED,
@@ -1107,9 +1107,15 @@ struct fstype *find_fstype_by_name(char *fst)
* names anyway)
*/
- for (i = 0; i < ARRAY_SIZE(fstypes); i++)
- if (!strcmp(fstypes[i].name, fst))
- return fstypes + i;
+ for (i = 1; i < ARRAY_SIZE(fstypes); i++) {
+ struct fstype *fstype = fstypes + i;
+
+ if (!fstype->name)
+ break;
+
+ if (!strcmp(fstype->name, fst))
+ return fstype;
+ }
return &fstypes[0];
}
@@ -1121,9 +1127,15 @@ static struct fstype *decode_fstype(u32 fst)
if (fst == FSTYPE__UNSUPPORTED)
goto uns;
- for (i = 0; i < ARRAY_SIZE(fstypes); i++)
- if (fstypes[i].code == fst)
- return fstypes + i;
+ for (i = 1; i < ARRAY_SIZE(fstypes); i++) {
+ struct fstype *fstype = fstypes + i;
+
+ if (!fstype->name)
+ break;
+
+ if (fstype->code == fst)
+ return fstype;
+ }
uns:
return &fstypes[0];
}
--
1.5.5.1
More information about the CRIU
mailing list