[PATCH 5.6 216/254] NFS: Fix a few constant_table array definitions

From: Greg Kroah-Hartman
Date: Thu Apr 16 2020 - 10:29:08 EST


From: Scott Mayhew <smayhew@xxxxxxxxxx>

commit 529af90576cfa44aa107e9876e2ebaa053983986 upstream.

nfs_vers_tokens, nfs_xprt_protocol_tokens, and nfs_secflavor_tokens were
all missing an empty item at the end of the array, allowing
lookup_constant() to potentially walk off the end and trigger and oops.

Reported-by: Olga Kornievskaia <aglo@xxxxxxxxx>
Signed-off-by: Scott Mayhew <smayhew@xxxxxxxxxx>
Fixes: e38bb238ed8c ("NFS: Convert mount option parsing to use functionality from fs_parser.h")
Cc: stable@xxxxxxxxxxxxxxx # v5.6
Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
fs/nfs/fs_context.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)

--- a/fs/nfs/fs_context.c
+++ b/fs/nfs/fs_context.c
@@ -190,6 +190,7 @@ static const struct constant_table nfs_v
{ "4.0", Opt_vers_4_0 },
{ "4.1", Opt_vers_4_1 },
{ "4.2", Opt_vers_4_2 },
+ {}
};

enum {
@@ -202,13 +203,14 @@ enum {
nr__Opt_xprt
};

-static const struct constant_table nfs_xprt_protocol_tokens[nr__Opt_xprt] = {
+static const struct constant_table nfs_xprt_protocol_tokens[] = {
{ "rdma", Opt_xprt_rdma },
{ "rdma6", Opt_xprt_rdma6 },
{ "tcp", Opt_xprt_tcp },
{ "tcp6", Opt_xprt_tcp6 },
{ "udp", Opt_xprt_udp },
{ "udp6", Opt_xprt_udp6 },
+ {}
};

enum {
@@ -239,6 +241,7 @@ static const struct constant_table nfs_s
{ "spkm3i", Opt_sec_spkmi },
{ "spkm3p", Opt_sec_spkmp },
{ "sys", Opt_sec_sys },
+ {}
};

/*