Skip to contentSkip to conversation

parisc: Add build-time sanity checks for compat ipc struct sizes

PATCH In review Helge Deller 1 participant 2 messages Oct 28, 2015 – Oct 29, 2015 PA-RISC architecture

lore
Share & tools
lore

Helge Deller

author maintainer
#0 lore raw

PATCH 1/1 parisc: Add build-time sanity checks for compat ipc struct sizes

Ensure that the size of various compat ipc structs are the same as of the native kernel.

arch/parisc/mm/init.c +10 -0
index c229427..f2ee988 100644
@@ -23,6 +23,7 @@
 #include <linux/unistd.h>
 #include <linux/nodemask.h>	/* for node_online_map */
 #include <linux/pagemap.h>	/* for release_pages and page_cache_release */
+#include <linux/compat.h>
 
 #include <asm/pgalloc.h>
 #include <asm/pgtable.h>
@@ -30,6 +31,7 @@
 #include <asm/pdc_chassis.h>
 #include <asm/mmzone.h>
 #include <asm/sections.h>
+#include <asm/msgbuf.h>
 
 extern int  data_start;
 extern void parisc_kernel_start(void);	/* Kernel entry point in head.S */
@@ -590,6 +592,14 @@ unsigned long pcxl_dma_start __read_mostly;
 
 void __init mem_init(void)
 {
+#ifdef CONFIG_COMPAT
+	/* Do sanity checks on compat structures */
+	BUILD_BUG_ON(sizeof(struct compat_ipc64_perm) != sizeof(struct ipc64_perm));
+	BUILD_BUG_ON(sizeof(struct compat_msqid64_ds) != sizeof(struct msqid64_ds));
+	BUILD_BUG_ON(sizeof(struct compat_semid64_ds) != sizeof(struct semid64_ds));
+	BUILD_BUG_ON(sizeof(struct compat_shmid64_ds) != sizeof(struct shmid64_ds));
+#endif
+
 	/* Do sanity checks on page table constants */
 	BUILD_BUG_ON(PTE_ENTRY_SIZE != sizeof(pte_t));
 	BUILD_BUG_ON(PMD_ENTRY_SIZE != sizeof(pmd_t));
author maintainer
#1 lore raw
Quoted 2 lines · Helge Deller

Ensure that the size of various compat ipc structs are the same as of the native kernel.

I've pushed all of my patches (with modifications to what I sent earlier) to fix the IPC structs into the compat-patches branch of my git tree.
If someone wants to test, please pull from here:
git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux.git compat-patches

It's based on the sources of kernel 3.18 but merges cleanly up to git head.

Helge