42 lines
1.1 KiB
Diff
42 lines
1.1 KiB
Diff
From: Mans Rullgard <mans@mansr.com>
|
|
Date: Sat, 28 Mar 2009 12:54:25 +0000 (+0000)
|
|
Subject: NSM: Fix unaligned accesses in nsm_init_private()
|
|
X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=8f2bd6fdde1ebfef57f65b6cf29b29008c23d297
|
|
|
|
NSM: Fix unaligned accesses in nsm_init_private()
|
|
|
|
This fixes unaligned accesses in nsm_init_private() when
|
|
creating nlm_reboot keys.
|
|
|
|
Signed-off-by: Mans Rullgard <mans@mansr.com>
|
|
---
|
|
|
|
diff --git a/fs/lockd/mon.c b/fs/lockd/mon.c
|
|
index 5e2c4d5..6d5d4a4 100644
|
|
--- a/fs/lockd/mon.c
|
|
+++ b/fs/lockd/mon.c
|
|
@@ -16,6 +16,8 @@
|
|
#include <linux/sunrpc/svc.h>
|
|
#include <linux/lockd/lockd.h>
|
|
|
|
+#include <asm/unaligned.h>
|
|
+
|
|
#define NLMDBG_FACILITY NLMDBG_MONITOR
|
|
#define NSM_PROGRAM 100024
|
|
#define NSM_VERSION 1
|
|
@@ -274,10 +276,12 @@ static void nsm_init_private(struct nsm_handle *nsm)
|
|
{
|
|
u64 *p = (u64 *)&nsm->sm_priv.data;
|
|
struct timespec ts;
|
|
+ s64 ns;
|
|
|
|
ktime_get_ts(&ts);
|
|
- *p++ = timespec_to_ns(&ts);
|
|
- *p = (unsigned long)nsm;
|
|
+ ns = timespec_to_ns(&ts);
|
|
+ put_unaligned(ns, p);
|
|
+ put_unaligned((unsigned long)nsm, p + 1);
|
|
}
|
|
|
|
static struct nsm_handle *nsm_create_handle(const struct sockaddr *sap,
|