Peter Collingbourne <pcc@xxxxxxxxxx> writes: > From: Helge Deller <deller@xxxxxx> > > I believe we can and *should* drop this parisc-specific typedef for > __sighandler_t when compiling a 64-bit kernel. The reasons: > > 1. We don't have a 64-bit userspace yet, so nothing (on userspace side) > can break. > > 2. Inside the Linux kernel, this is only used in kernel/signal.c, in > function kernel_sigaction() where the signal handler is compared against > SIG_IGN. SIG_IGN is defined as (__sighandler_t)1), so only the pointers > are compared. > > 3. Even when a 64-bit userspace gets added at some point, I think > __sighandler_t should be defined what it is: a function pointer struct. > > I compiled kernel/signal.c with and without the patch, and the produced code > is identical in both cases. > > Signed-off-by: Helge Deller <deller@xxxxxx> > Reviewed-by: Peter Collingbourne <pcc@xxxxxxxxxx> > Link: > https://linux-review.googlesource.com/id/I21c43f21b264f339e3aa395626af838646f62d97 Peter as you have sent this, this also needs your Signed-off-by. Otherwise this looks reasonable to me. Acked-by: "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx> While the final bits look like they are still under discussion it looks like the preceding cleanups are pretty solid at this point. Any chance we can get the cleanups into a tree in linux-next so that the discussion can focus on the core parts of this work? Perhaps I should pick up the clenaups? Eric > --- > arch/parisc/include/uapi/asm/signal.h | 8 -------- > 1 file changed, 8 deletions(-) > > diff --git a/arch/parisc/include/uapi/asm/signal.h b/arch/parisc/include/uapi/asm/signal.h > index e605197b462c..d9c51769851a 100644 > --- a/arch/parisc/include/uapi/asm/signal.h > +++ b/arch/parisc/include/uapi/asm/signal.h > @@ -85,16 +85,8 @@ > struct siginfo; > > /* Type of a signal handler. */ > -#if defined(__LP64__) > -/* function pointers on 64-bit parisc are pointers to little structs and the > - * compiler doesn't support code which changes or tests the address of > - * the function in the little struct. This is really ugly -PB > - */ > -typedef char __user *__sighandler_t; > -#else > typedef void __signalfn_t(int); > typedef __signalfn_t __user *__sighandler_t; > -#endif > > typedef struct sigaltstack { > void __user *ss_sp;