linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/2] ia64: make use of new extable.h header
@ 2016-08-16 15:14 Paul Gortmaker
  2016-08-16 15:14 ` [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h Paul Gortmaker
  2016-08-16 15:14 ` [PATCH 2/2] ia64: ensure exception table search users include extable.h Paul Gortmaker
  0 siblings, 2 replies; 5+ messages in thread
From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Paul Gortmaker

We forked the exception table content out of module.h into a new
extable.h file[1].  We temporarily include extable.h into the module.h
itself.  Now we work our way across the arch independent and arch
specific files needing just exception table content, and move them
off module.h and onto extable.h

Once that is done, we can remove the extable.h from module.h and in
doing it like this, we avoid introducing build failures into the git
history.

Here we move ia64 onto using the new header, and in doing so also
macro-ize something in uaccess.h to make it more consistent with
the rest of that file.

Paul.

[1] https://lkml.org/lkml/2016/7/24/224
-- 

Paul Gortmaker (2):
  ia64: macro-ize ia64_done_with_exception in asm/uaccess.h
  ia64: ensure exception table search users include extable.h

 arch/ia64/include/asm/uaccess.h | 28 ++++++++++++++--------------
 arch/ia64/kernel/kprobes.c      |  2 +-
 arch/ia64/kernel/traps.c        |  3 ++-
 arch/ia64/kernel/unaligned.c    |  1 +
 arch/ia64/mm/fault.c            |  1 +
 5 files changed, 19 insertions(+), 16 deletions(-)

-- 
2.8.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h
  2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker
@ 2016-08-16 15:14 ` Paul Gortmaker
  2016-08-17 17:15   ` Al Viro
  2016-08-16 15:14 ` [PATCH 2/2] ia64: ensure exception table search users include extable.h Paul Gortmaker
  1 sibling, 1 reply; 5+ messages in thread
From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64

Most of the other C content in this file is already implemented
in macro form.  Doing the same for this function will allow us
to get rid of the duplicated search_exception_tables prototype.
We will bring it in as required via <linux/extable.h> inclusion.

Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 arch/ia64/include/asm/uaccess.h | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h
index 465c70982f40..4b52b79213a3 100644
--- a/arch/ia64/include/asm/uaccess.h
+++ b/arch/ia64/include/asm/uaccess.h
@@ -363,17 +363,17 @@ struct exception_table_entry {
 extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e);
 extern const struct exception_table_entry *search_exception_tables (unsigned long addr);
 
-static inline int
-ia64_done_with_exception (struct pt_regs *regs)
-{
-	const struct exception_table_entry *e;
-	e = search_exception_tables(regs->cr_iip + ia64_psr(regs)->ri);
-	if (e) {
-		ia64_handle_exception(regs, e);
-		return 1;
-	}
-	return 0;
-}
+#define ia64_done_with_exception(regs)					  \
+({									  \
+	int __ex_ret = 0;						  \
+	const struct exception_table_entry *e;				  \
+	e = search_exception_tables((regs)->cr_iip + ia64_psr(regs)->ri); \
+	if (e) {							  \
+		ia64_handle_exception(regs, e);				  \
+		__ex_ret = 1;						  \
+	}								  \
+	__ex_ret;							  \
+})
 
 #define ARCH_HAS_TRANSLATE_MEM_PTR	1
 static __inline__ void *
-- 
2.8.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/2] ia64: ensure exception table search users include extable.h
  2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker
  2016-08-16 15:14 ` [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h Paul Gortmaker
@ 2016-08-16 15:14 ` Paul Gortmaker
  1 sibling, 0 replies; 5+ messages in thread
From: Paul Gortmaker @ 2016-08-16 15:14 UTC (permalink / raw)
  To: linux-kernel; +Cc: Paul Gortmaker, Tony Luck, Fenghua Yu, linux-ia64

We start with a delete of a duplicate prototype in asm/uaccess.h
that doesn't need to exist, as it duplicates content in extable.h
and since that header is so small, there is no point trying to
avoid using it.

Then we make sure anyone using search_exception_tables directly or
via the ia64_done_with_exception macro has included extable.h

In the process, we remove an include of moduleloader.h that was
apparently not really required; it would have been fetching in
module.h and hence the previous location of the exception search
function prototypes, but we need not rely on that anymore.

Cc: Tony Luck <tony.luck@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: linux-ia64@vger.kernel.org
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
 arch/ia64/include/asm/uaccess.h | 4 ++--
 arch/ia64/kernel/kprobes.c      | 2 +-
 arch/ia64/kernel/traps.c        | 3 ++-
 arch/ia64/kernel/unaligned.c    | 1 +
 arch/ia64/mm/fault.c            | 1 +
 5 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/arch/ia64/include/asm/uaccess.h b/arch/ia64/include/asm/uaccess.h
index 4b52b79213a3..647e43d0a157 100644
--- a/arch/ia64/include/asm/uaccess.h
+++ b/arch/ia64/include/asm/uaccess.h
@@ -360,8 +360,8 @@ struct exception_table_entry {
 	int fixup;	/* location-relative continuation addr.; if bit 2 is set, r9 is set to 0 */
 };
 
-extern void ia64_handle_exception (struct pt_regs *regs, const struct exception_table_entry *e);
-extern const struct exception_table_entry *search_exception_tables (unsigned long addr);
+extern void ia64_handle_exception(struct pt_regs *regs,
+				  const struct exception_table_entry *e);
 
 #define ia64_done_with_exception(regs)					  \
 ({									  \
diff --git a/arch/ia64/kernel/kprobes.c b/arch/ia64/kernel/kprobes.c
index c7c51445c3be..671389430e90 100644
--- a/arch/ia64/kernel/kprobes.c
+++ b/arch/ia64/kernel/kprobes.c
@@ -28,7 +28,7 @@
 #include <linux/string.h>
 #include <linux/slab.h>
 #include <linux/preempt.h>
-#include <linux/moduleloader.h>
+#include <linux/extable.h>
 #include <linux/kdebug.h>
 
 #include <asm/pgtable.h>
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c
index 77edd68c5161..f36d3c9e1961 100644
--- a/arch/ia64/kernel/traps.c
+++ b/arch/ia64/kernel/traps.c
@@ -12,7 +12,8 @@
 #include <linux/sched.h>
 #include <linux/tty.h>
 #include <linux/vt_kern.h>		/* For unblank_screen() */
-#include <linux/module.h>       /* for EXPORT_SYMBOL */
+#include <linux/export.h>
+#include <linux/extable.h>
 #include <linux/hardirq.h>
 #include <linux/kprobes.h>
 #include <linux/delay.h>		/* for ssleep() */
diff --git a/arch/ia64/kernel/unaligned.c b/arch/ia64/kernel/unaligned.c
index 7f0d31656b4d..7224890ea311 100644
--- a/arch/ia64/kernel/unaligned.c
+++ b/arch/ia64/kernel/unaligned.c
@@ -17,6 +17,7 @@
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/tty.h>
+#include <linux/extable.h>
 #include <linux/ratelimit.h>
 
 #include <asm/intrinsics.h>
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c
index fa6ad95e992e..702f4b0845ab 100644
--- a/arch/ia64/mm/fault.c
+++ b/arch/ia64/mm/fault.c
@@ -7,6 +7,7 @@
 #include <linux/sched.h>
 #include <linux/kernel.h>
 #include <linux/mm.h>
+#include <linux/extable.h>
 #include <linux/interrupt.h>
 #include <linux/kprobes.h>
 #include <linux/kdebug.h>
-- 
2.8.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h
  2016-08-16 15:14 ` [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h Paul Gortmaker
@ 2016-08-17 17:15   ` Al Viro
  2016-08-18 15:14     ` Paul Gortmaker
  0 siblings, 1 reply; 5+ messages in thread
From: Al Viro @ 2016-08-17 17:15 UTC (permalink / raw)
  To: Paul Gortmaker; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64

On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote:
> Most of the other C content in this file is already implemented
> in macro form.  Doing the same for this function will allow us
> to get rid of the duplicated search_exception_tables prototype.
> We will bring it in as required via <linux/extable.h> inclusion.

What is it doing in uaccess.h in the first place?  ia64_done_with_exception()
is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it
into a widely-used header?

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h
  2016-08-17 17:15   ` Al Viro
@ 2016-08-18 15:14     ` Paul Gortmaker
  0 siblings, 0 replies; 5+ messages in thread
From: Paul Gortmaker @ 2016-08-18 15:14 UTC (permalink / raw)
  To: Al Viro; +Cc: linux-kernel, Tony Luck, Fenghua Yu, linux-ia64

[Re: [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h] On 17/08/2016 (Wed 18:15) Al Viro wrote:

> On Tue, Aug 16, 2016 at 11:14:42AM -0400, Paul Gortmaker wrote:
> > Most of the other C content in this file is already implemented
> > in macro form.  Doing the same for this function will allow us
> > to get rid of the duplicated search_exception_tables prototype.
> > We will bring it in as required via <linux/extable.h> inclusion.
> 
> What is it doing in uaccess.h in the first place?  ia64_done_with_exception()
> is used only in the guts of arch/ia64 (2 in kernel, 1 in mm), so why dump it
> into a widely-used header?

Looking at arm and alpha, it seems there are other arch that have
exception stuff in their own arch specific uaccess.h file, so I'm
guessing it got there in ia64 just by happenstance of copying existing
implementations.

THere is a precedent for arch specific asm/exception.h -- we could
create one for ia64 and move the chunks over there if folks thought that
was worthwhile I suppose.

Paul.
--

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2016-08-19  3:22 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-16 15:14 [PATCH 0/2] ia64: make use of new extable.h header Paul Gortmaker
2016-08-16 15:14 ` [PATCH 1/2] ia64: macro-ize ia64_done_with_exception in asm/uaccess.h Paul Gortmaker
2016-08-17 17:15   ` Al Viro
2016-08-18 15:14     ` Paul Gortmaker
2016-08-16 15:14 ` [PATCH 2/2] ia64: ensure exception table search users include extable.h Paul Gortmaker

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).