Commit ad5b365c authored by Mans Rullgard's avatar Mans Rullgard Committed by Trond Myklebust

NSM: Fix unaligned accesses in nsm_init_private()

This fixes unaligned accesses in nsm_init_private() when
creating nlm_reboot keys.
Signed-off-by: default avatarMans Rullgard <mans@mansr.com>
Reviewed-by: default avatarChuck Lever <chuck.lever@oracle.com>
Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 3c8c45df
...@@ -16,6 +16,8 @@ ...@@ -16,6 +16,8 @@
#include <linux/sunrpc/svc.h> #include <linux/sunrpc/svc.h>
#include <linux/lockd/lockd.h> #include <linux/lockd/lockd.h>
#include <asm/unaligned.h>
#define NLMDBG_FACILITY NLMDBG_MONITOR #define NLMDBG_FACILITY NLMDBG_MONITOR
#define NSM_PROGRAM 100024 #define NSM_PROGRAM 100024
#define NSM_VERSION 1 #define NSM_VERSION 1
...@@ -274,10 +276,12 @@ static void nsm_init_private(struct nsm_handle *nsm) ...@@ -274,10 +276,12 @@ static void nsm_init_private(struct nsm_handle *nsm)
{ {
u64 *p = (u64 *)&nsm->sm_priv.data; u64 *p = (u64 *)&nsm->sm_priv.data;
struct timespec ts; struct timespec ts;
s64 ns;
ktime_get_ts(&ts); ktime_get_ts(&ts);
*p++ = timespec_to_ns(&ts); ns = timespec_to_ns(&ts);
*p = (unsigned long)nsm; put_unaligned(ns, p);
put_unaligned((unsigned long)nsm, p + 1);
} }
static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap, static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment