From: Russ Allbery Date: Tue, 16 Oct 2007 06:20:34 +0000 (+0000) Subject: Remove patches that were applied upstream. Re-diff and merge some of X-Git-Tag: debian/1.4.5.pre2.dfsg1-1~10 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=79bca6c049bb8e71a448d1aec5786f90a62e9bd8;p=packages%2Fo%2Fopenafs.git Remove patches that were applied upstream. Re-diff and merge some of the patches that weren't fully applied. --- diff --git a/debian/patches/amd64-syscall-probe b/debian/patches/amd64-syscall-probe deleted file mode 100644 index e658dc2eb..000000000 --- a/debian/patches/amd64-syscall-probe +++ /dev/null @@ -1,111 +0,0 @@ -Patch the syscall probing to check for readability as well as writability, -fixing problems with the latest AMD64 kernel. Pulled from upstream -stable branch, will be in 1.4.5. - ---- openafs.orig/src/afs/LINUX/osi_probe.c -+++ openafs/src/afs/LINUX/osi_probe.c -@@ -59,6 +59,7 @@ - #include "afsincludes.h" - #endif - #include -+#include - #ifdef CONFIG_H_EXISTS - #include - #endif -@@ -153,6 +154,7 @@ - * 0x0010 - detail - check_harder - * 0x0020 - detail - check_harder/zapped - * 0x0040 - automatically ignore setgroups and afs_syscall -+ * 0x0080 - detail - check_table_readable - */ - static int probe_debug = 0x41; - #ifdef module_param -@@ -298,6 +300,10 @@ - int debug_ignore_NR[4]; /* syscalls to ignore for debugging */ - } probectl; - -+#if defined(AFS_I386_LINUX26_ENV) || defined(AFS_AMD64_LINUX26_ENV) -+static int check_access(unsigned long, int); -+static int check_table_readable(probectl *, PROBETYPE *); -+#endif - - - /********** Probing Configuration: sys_call_table **********/ -@@ -940,6 +946,11 @@ - PROBETYPE *x; - int i, j; - -+#if defined(AFS_I386_LINUX26_ENV) || defined(AFS_AMD64_LINUX26_ENV) -+ i = check_table_readable(P, ptr); -+ if (i >= 0) return i; -+#endif -+ - for (x = ptr, i = 0; i < _SS(NR_syscalls); i++, x++) { - #ifdef OSI_PROBE_DEBUG - if (probe_debug & 0x0040) { -@@ -1062,6 +1073,11 @@ - unsigned long ip1; - int i, s; - -+#if defined(AFS_I386_LINUX26_ENV) || defined(AFS_AMD64_LINUX26_ENV) -+ i = check_table_readable(P, p); -+ if (i >= 0) return 0; -+#endif -+ - /* Check zapped syscalls */ - for (i = 1; i < P->n_zapped_syscalls; i++) { - if (p[_SS(P->zapped_syscalls[i])] != p[_SS(P->zapped_syscalls[0])]) { -@@ -1349,7 +1365,7 @@ - } - - #if defined(AFS_I386_LINUX26_ENV) || defined(AFS_AMD64_LINUX26_ENV) --static int check_writable(unsigned long address) -+static int check_access(unsigned long address, int mode) - { - pgd_t *pgd = pgd_offset_k(address); - #ifdef PUD_SIZE -@@ -1374,10 +1390,34 @@ - pte = (pte_t *)pmd; - else - pte = pte_offset_kernel(pmd, address); -- if (pte_none(*pte) || !pte_present(*pte) || !pte_write(*pte)) -+ if (pte_none(*pte) || !pte_present(*pte)) -+ return 0; -+ if (mode && !pte_write(*pte)) - return 0; - return 1; - } -+ -+static int check_table_readable(probectl *P, PROBETYPE *ptr) -+{ -+ PROBETYPE *next_page; -+ int i = 0, delta; -+ -+ while (i < _SS(NR_syscalls)) { -+ next_page = (PROBETYPE *)PAGE_ALIGN((unsigned long)(ptr+1)); -+ delta = next_page - ptr; -+ if (!check_access((unsigned long)ptr, 0)) { -+#ifdef OSI_PROBE_DEBUG -+ if (probe_debug & 0x0080) -+ printk("<7>osi_probe: %s 0x%016lx not readable; delta=0x%lx\n", -+ P->symbol, (unsigned long)ptr, delta); -+#endif -+ return delta - 1; -+ } -+ ptr += delta; -+ i += delta; -+ } -+ return -1; -+} - #endif - - void *osi_find_syscall_table(int which) -@@ -1405,7 +1445,7 @@ - } - printk("Found %s at 0x%lx (%s)\n", P->desc, (unsigned long)answer, method); - #if defined(AFS_I386_LINUX26_ENV) || defined(AFS_AMD64_LINUX26_ENV) -- if (!check_writable((unsigned long)answer)) { -+ if (!check_access((unsigned long)answer, 1)) { - printk("Address 0x%lx is not writable.\n", (unsigned long)answer); - printk("System call hooks will not be installed; proceeding anyway\n"); - return 0; diff --git a/debian/patches/compiler-flags b/debian/patches/compiler-flags index 28ee1d8b3..eddf6d449 100644 --- a/debian/patches/compiler-flags +++ b/debian/patches/compiler-flags @@ -122,7 +122,7 @@ Also combines the sparc sysnames together, which is suitable upstream. SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" -@@ -555,8 +557,7 @@ +@@ -557,8 +559,7 @@ ;; s390_linux22) @@ -132,7 +132,7 @@ Also combines the sparc sysnames together, which is suitable upstream. LD="ld" KERN_OPTMZ=-O2 LEX="flex -l" -@@ -564,6 +565,7 @@ +@@ -566,6 +567,7 @@ MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" @@ -140,7 +140,7 @@ Also combines the sparc sysnames together, which is suitable upstream. SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" -@@ -572,8 +574,7 @@ +@@ -574,8 +576,7 @@ ;; s390_linux24|s390_linux26) @@ -150,7 +150,7 @@ Also combines the sparc sysnames together, which is suitable upstream. LD="ld" KERN_OPTMZ=-O2 LEX="flex -l" -@@ -581,6 +582,7 @@ +@@ -583,6 +584,7 @@ MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" @@ -158,7 +158,7 @@ Also combines the sparc sysnames together, which is suitable upstream. SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" XCFLAGS="-O -g -D_LARGEFILE64_SOURCE" -@@ -589,8 +591,7 @@ +@@ -591,8 +593,7 @@ ;; s390x_linux24|s390x_linux26) @@ -168,7 +168,7 @@ Also combines the sparc sysnames together, which is suitable upstream. LD="ld" KERN_OPTMZ=-O2 LEX="flex -l" -@@ -598,6 +599,7 @@ +@@ -600,6 +601,7 @@ MT_CFLAGS='-DAFS_PTHREAD_ENV -pthread -D_REENTRANT ${XCFLAGS}' MT_LIBS="-lpthread" PAM_CFLAGS="-O -Dlinux -DLINUX_PAM -fPIC" @@ -176,7 +176,7 @@ Also combines the sparc sysnames together, which is suitable upstream. SHLIB_LDFLAGS="-shared -Xlinker -x -Xlinker -Bsymbolic" TXLIBS="-lncurses" XCFLAGS="-O -g -D_LARGEFILE64_SOURCE -D__s390x__" -@@ -667,12 +669,13 @@ +@@ -669,12 +671,13 @@ SHLIB_LINKER="${CC} -shared" ;; @@ -191,7 +191,7 @@ Also combines the sparc sysnames together, which is suitable upstream. SHLIB_LDFLAGS="-shared -Xlinker -x" TXLIBS="-lncurses" XCFLAGS="-O2 -D_LARGEFILE64_SOURCE" -@@ -682,19 +685,6 @@ +@@ -684,19 +687,6 @@ SHLIB_LINKER="${MT_CC} -shared" ;; diff --git a/debian/patches/des-alignment b/debian/patches/des-alignment deleted file mode 100644 index 758969d6e..000000000 --- a/debian/patches/des-alignment +++ /dev/null @@ -1,30 +0,0 @@ -Fix the DES library alignment, which was otherwise causing problems on -SPARC Linux. Pulled from the upstream stable branch, will be in 1.4.5. - ---- openafs.orig/src/des/des.h -+++ openafs/src/des/des.h -@@ -20,7 +20,10 @@ - typedef unsigned char des_cblock[8]; /* crypto-block size */ - /* Key schedule */ - typedef struct des_ks_struct { -- des_cblock _; -+ union { -+ afs_uint32 i[2]; -+ des_cblock _; -+ } _; - } des_key_schedule[16]; - - #define DES_KEY_SZ (sizeof(des_cblock)) ---- openafs.orig/src/des/pcbc_encrypt.c -+++ openafs/src/des/pcbc_encrypt.c -@@ -24,9 +24,9 @@ - #ifndef KERNEL - #include - #endif --#include - #include - #include -+#include - #include "des_prototypes.h" - - RCSID diff --git a/debian/patches/ka-forwarder b/debian/patches/ka-forwarder deleted file mode 100644 index d9d5beea0..000000000 --- a/debian/patches/ka-forwarder +++ /dev/null @@ -1,436 +0,0 @@ -Add the ka-forwarder program, needed for some migration scenarios from -the AFS kaserver. Pulled from upstream, will be in 1.4.5. - ---- openafs.orig/src/aklog/Makefile.in -+++ openafs/src/aklog/Makefile.in -@@ -16,7 +16,7 @@ - SRCS= aklog.c aklog_main.c krb_util.c linked_list.c - OBJS= aklog.o aklog_main.o krb_util.o linked_list.o - --all: aklog asetkey -+all: aklog asetkey ka-forwarder - - aklog: ${OBJS} ${AFSLIBS} - ${CC} -o $@ ${CFLAGS} ${OBJS} ${AKLIBS} ${AFSLIBS} ${XLIBS} -@@ -24,11 +24,16 @@ - asetkey: asetkey.o ${AFSLIBS} - ${CC} -o $@ ${CFLAGS} asetkey.o ${AKLIBS} ${AFSLIBS} ${XLIBS} - -+ka-forwarder: ka-forwarder.o -+ ${CC} -o $@ ${CFLAGS} ka-forwarder.o ${LIBS} ${XLIBS} -+ - # - # Installation targets - # - install: \ -- ${DESTDIR}${bindir}/aklog ${DESTDIR}${afssrvbindir}/asetkey -+ ${DESTDIR}${bindir}/aklog \ -+ ${DESTDIR}${afssrvbindir}/asetkey \ -+ ${DESTDIR}${afssrvbindir}/ka-forwarder - - ${DESTDIR}${bindir}/aklog: aklog - ${INSTALL} $? $@ -@@ -36,8 +41,13 @@ - ${DESTDIR}${afssrvbindir}/asetkey: asetkey - ${INSTALL} $? $@ - -+${DESTDIR}${afssrvbindir}/ka-forwarder: ka-forwarder -+ ${INSTALL} $? $@ -+ - dest: \ -- ${DEST}/bin/aklog ${DEST}/root.server/usr/afs/bin/asetkey -+ ${DEST}/bin/aklog \ -+ ${DEST}/root.server/usr/afs/bin/asetkey \ -+ ${DEST}/root.server/usr/afs/bin/ka-forwarder - - ${DEST}/bin/aklog: aklog - ${INSTALL} $? $@ -@@ -45,11 +55,14 @@ - ${DEST}/root.server/usr/afs/bin/asetkey: asetkey - ${INSTALL} $? $@ - -+${DEST}/root.server/usr/afs/bin/ka-forwarder: ka-forwarder -+ ${INSTALL} $? $@ -+ - # - # Misc. targets - # - clean: -- $(RM) -f *.o ${OBJS} aklog asetkey -+ $(RM) -f *.o ${OBJS} aklog asetkey ka-forwarder - - include ../config/Makefile.version - ---- /dev/null -+++ openafs/src/aklog/ka-forwarder.c -@@ -0,0 +1,282 @@ -+/* -+ * COPYRIGHT NOTICE -+ * Copyright (c) 1994 Carnegie Mellon University -+ * All Rights Reserved. -+ * -+ * See for use and distribution information. -+ */ -+ -+/* -+ * HISTORY -+ * $Log: ka-forwarder.c,v $ -+ * Revision 1.1 1997/06/03 18:23:54 kenh -+ * . -+ * -+ * Revision 1.4 1996/08/09 01:00:21 jhutz -+ * When initializing the array of fakeka servers, remember to set -+ * the address family of each server; otherwise SunOS complains. -+ * [1996/08/09 00:58:46 jhutz] -+ * -+ * Revision 1.3 1996/08/09 00:17:19 jhutz -+ * Merged in changes from Chuck Silvers: -+ * - Support for more than one fakeka server -+ * - Support for specifying ports for each fakeka server separately from the -+ * others, and from the port we listen on. -+ * -+ * Plus a minor bug fix to Chuck's code. -+ * Basically, this version is designed to provide both reliability and -+ * load-balancing cheaply. Basically, we forward packets to all of the -+ * fakeka servers in round-robin fashion. So, if a client is losing on -+ * one server, its retry should go to a different one, if more than one -+ * is specified. -+ * [1996/08/03 02:13:36 jhutz] -+ * -+ * Revision 1.2 1995/02/23 18:26:36 chs -+ * Created. -+ * [1995/02/23 18:26:03 chs] -+ * -+ * $EndLog$ -+ */ -+ -+/* -+ * This program is intended to run on afs DB servers. -+ * Its function is to forward KA requests to a fakeka server -+ * running on an MIT kerberos server. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#if HAVE_GETOPT_H -+#include -+#else -+int getopt (int, char * const *, const char *); -+int optind, opterr; -+char *optarg; -+#endif -+ -+#define BUFFER_SIZE 2048 -+ -+ -+char *prog; -+ -+int num_servers, cur_server; -+struct sockaddr_in *servers; -+ -+ -+void -+perrorexit(str) -+char *str; -+{ -+ perror(str); -+ exit(1); -+} -+ -+ -+void -+setup_servers(argc, argv) -+int argc; -+char **argv; -+{ -+ int i; -+ u_int fwdaddr; -+ u_short fwdport; -+ -+ num_servers = argc; -+ -+ servers = malloc(sizeof(*servers) * num_servers); -+ if (servers == NULL) -+ perrorexit("malloc failed"); -+ -+ for (i = 0; i < num_servers; i++) { -+ char *host, *port; -+ -+ fwdport = htons(7004); -+ -+ host = argv[i]; -+ port = strchr(host, '/'); -+ if (port != NULL) { -+ *port++ = 0; -+ -+ if (isdigit(port[0])) { -+ fwdport = htons(atoi(port)); -+ } -+ else { -+ struct servent *srv = getservbyname(port, "udp"); -+ if (!srv) { -+ fprintf(stderr, "%s: unknown service %s\n", prog, port); -+ exit(1); -+ } -+ fwdport = srv->s_port; -+ } -+ } -+ -+ if (isdigit(host[0])) { -+ fwdaddr = inet_addr(host); -+ } -+ else { -+ struct hostent *h = gethostbyname(host); -+ if (!h) { -+ fprintf(stderr, "%s: unknown host %s\n", prog, host); -+ exit(1); -+ } -+ bcopy(h->h_addr, &fwdaddr, 4); -+ } -+ -+ servers[i].sin_family = AF_INET; -+ servers[i].sin_addr.s_addr = fwdaddr; -+ servers[i].sin_port = fwdport; -+ } -+} -+ -+ -+int -+setup_socket(port) -+u_short port; -+{ -+ int s, rv; -+ struct sockaddr_in sin; -+ -+ s = socket(AF_INET, SOCK_DGRAM, 0); -+ if (s < 0) -+ perrorexit("Couldn't create socket"); -+ -+ sin.sin_family = AF_INET; -+ sin.sin_addr.s_addr = 0; -+ sin.sin_port = htons(port); -+ -+ rv = bind(s, (struct sockaddr *)&sin, sizeof(sin)); -+ if (rv < 0) -+ perrorexit("Couldn't bind socket"); -+ -+ return s; -+} -+ -+ -+int -+packet_is_reply(from) -+struct sockaddr_in *from; -+{ -+ int i; -+ -+ for (i = 0; i < num_servers; i++) { -+ struct sockaddr_in *sin = &servers[i]; -+ -+ if (from->sin_addr.s_addr == sin->sin_addr.s_addr && -+ from->sin_port == sin->sin_port) -+ { -+ return 1; -+ } -+ } -+ -+ return 0; -+} -+ -+ -+int -+main(argc, argv) -+int argc; -+char **argv; -+{ -+ int c, s, rv; -+ u_short port; -+ -+ if (argc < 2) { -+ fprintf(stderr, -+ "usage: %s [-p port] [/port] [host/port ...]\n", -+ argv[0]); -+ exit(1); -+ } -+ -+ prog = argv[0]; -+ port = 7004; -+ -+ while ((c = getopt(argc, argv, "p:")) != -1) { -+ switch (c) { -+ case 'p': -+ port = atoi(optarg); -+ break; -+ default: -+ fprintf(stderr, "%s: invalid option '%c'\n", prog, c); -+ exit(1); -+ } -+ } -+ -+ /* -+ * hmm, different implementations of getopt seem to do different things -+ * when there aren't any options. linux sets optind = 1, which I would -+ * call correct, but sunos sets optind = 0. try to do the right thing. -+ */ -+ if (optind == 0) -+ optind = 1; -+ -+ setup_servers(argc - optind, argv + optind); -+ s = setup_socket(port); -+ -+ openlog("ka-forwarder", LOG_PID, LOG_DAEMON); -+ -+ for (;;) { -+ char buf[BUFFER_SIZE], *bufp, *sendptr; -+ struct sockaddr_in from, reply, *to; -+ int fromlen, sendlen; -+ -+ bufp = buf + 8; -+ fromlen = sizeof(from); -+ -+ rv = recvfrom(s, bufp, sizeof(buf) - 8, -+ 0, (struct sockaddr *)&from, &fromlen); -+ if (rv < 0) { -+ syslog(LOG_ERR, "recvfrom: %m"); -+ sleep(1); -+ continue; -+ } -+ -+ if (packet_is_reply(&from)) { -+ /* this is a reply, forward back to user */ -+ -+ to = &reply; -+ reply.sin_family = AF_INET; -+ bcopy(bufp, &reply.sin_addr.s_addr, 4); -+ bcopy(bufp + 4, &reply.sin_port, 2); -+ sendptr = bufp + 8; -+ sendlen = rv - 8; -+ } -+ else { -+ /* this is a request, forward to server */ -+ -+ cur_server = (cur_server + 1) % num_servers; -+ to = &servers[cur_server]; -+ -+ bcopy(&from.sin_addr.s_addr, bufp - 8, 4); -+ bcopy(&from.sin_port, bufp - 4, 2); -+ -+ sendptr = bufp - 8; -+ sendlen = rv + 8; -+ } -+ -+ { -+ char a1[16], a2[16]; -+ strcpy(a1, inet_ntoa(from.sin_addr)); -+ strcpy(a2, inet_ntoa(to->sin_addr)); -+ -+ syslog(LOG_INFO, "forwarding %d bytes from %s/%d to %s/%d\n", -+ sendlen, a1, htons(from.sin_port), a2, htons(to->sin_port)); -+ } -+ -+ rv = sendto(s, sendptr, sendlen, -+ 0, (struct sockaddr *)to, sizeof(*to)); -+ if (rv < 0) { -+ syslog(LOG_ERR, "sendto: %m"); -+ } -+ } -+} ---- /dev/null -+++ openafs/doc/man-pages/pod8/ka-forwarder.pod -@@ -0,0 +1,85 @@ -+=head1 NAME -+ -+ka-forwarder - Forward AFS Authentication Server requests to another server -+ -+=head1 SYNOPSIS -+ -+=for html -+
-+ -+B S<<< [B<-p> >] >>> >[/>] [...] -+ -+=for html -+
-+ -+=head1 DESCRIPTION -+ -+B listens for requests for an AFS Authentication Server and -+forwards them to a remove B server. B is a server that -+answers AFS Authentication Server protocol requests using a regular -+Kerberos KDC and is provided with some Kerberos 5 implementations. -+B has to run on the same host as the Kerberos KDC, however, and -+AFS clients send all native AFS authentication requests to the AFS -+database servers. If you don't want to run your Kerberos KDCs and your -+AFS database servers on the same host, run B on the AFS -+database servers and point it to B running on the Kerberos KDCs. -+ -+B takes one or more servers to which to forward the -+requests. The default port on the remote server to which to forward the -+command is 7004, but a different port can be specified by following the -+server name with a slash (C) and the port number. If multiple servers -+are given, B will send queries to each server in turn in a -+round-robin fashion. -+ -+=head1 CAUTIONS -+ -+Due to the way that B distinguishes from client requests and -+server responses, any messages from one of the servers to which -+B is forwarding will be considered a reply rather than a -+command and will not be forwarded. This means that the servers running -+B will not be able to use native AFS authentication requests and -+rely on B to send the requests to the right server. -+ -+B does not background itself. It should either be run in -+the background via the shell, or run via the Basic OverSeer Server (see -+L). -+ -+=head1 OPTIONS -+ -+=over 4 -+ -+=item B<-p> > -+ -+By default, B listens to the standard AFS Authentication -+Server port (7004). To listen to a different port, specify it with the -+B<-p> option. -+ -+=back -+ -+=head1 EXAMPLES -+ -+Forward AFS Authentication Server reqests to the B servers on -+kdc1.example.com and kdc2.example.com: -+ -+ % ka-forwarder kdc1.example.com kdc2.example.com & -+ -+Note the C<&> to tell the shell to run this command in the background. -+ -+=head1 PRIVILEGE REQUIRED -+ -+B only has to listen to port 7004 and therefore does not -+require any special privileges unless a privileged port is specified with -+the B<-p> option. -+ -+=head1 SEE ALSO -+ -+L, -+fakeka(8), -+L -+ -+=head1 COPYRIGHT -+ -+Copyright 2006 Russ Allbery -+ -+This documentation is covered by the IBM Public License Version 1.0. This -+man page was written by Russ Allbery for OpenAFS. diff --git a/debian/patches/kbuild-assembly b/debian/patches/kbuild-assembly deleted file mode 100644 index 7e818b3a3..000000000 --- a/debian/patches/kbuild-assembly +++ /dev/null @@ -1,15 +0,0 @@ -Change the expected source file name for assembly code in the kernel. -Only used by the PowerPC build, but fixes build problems on that -platform. Pulled from the upstream stable branch, will be in 1.4.5. - ---- openafs.orig/src/libafs/make_kbuild_makefile.pl -+++ openafs/src/libafs/make_kbuild_makefile.pl -@@ -79,7 +79,7 @@ - foreach (@objects) { - die "No source known for $_\n" unless exists $deps{$_}; - if($deps{$_} =~ /\.s$/) { -- ($src = $_) =~ s/\.o$/.s/; -+ ($src = $_) =~ s/\.o$/.S/; - } else { - ($src = $_) =~ s/\.o$/.c/; - } diff --git a/debian/patches/linux-2.6.22 b/debian/patches/linux-2.6.22 deleted file mode 100644 index 0704933cd..000000000 --- a/debian/patches/linux-2.6.22 +++ /dev/null @@ -1,164 +0,0 @@ -Add support for the kernel structure changes in 2.6.22. Pulled from the -upstream stable branch, will be in 1.4.5. - ---- openafs.orig/acinclude.m4 -+++ openafs/acinclude.m4 -@@ -611,6 +611,7 @@ - LINUX_FS_STRUCT_FOP_HAS_FLOCK - LINUX_KERNEL_LINUX_SYSCALL_H - LINUX_KERNEL_LINUX_SEQ_FILE_H -+ LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG - LINUX_KERNEL_SELINUX - LINUX_KERNEL_SOCK_CREATE - LINUX_KERNEL_PAGE_FOLLOW_LINK -@@ -626,6 +627,7 @@ - LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_EXIT_STATE - LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TGID - LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_TODO -+ LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO - LINUX_EXPORTS_TASKLIST_LOCK - LINUX_GET_SB_HAS_STRUCT_VFSMOUNT - LINUX_STATFS_TAKES_DENTRY -@@ -767,6 +769,9 @@ - if test "x$ac_cv_linux_func_recalc_sigpending_takes_void" = "xyes"; then - AC_DEFINE(RECALC_SIGPENDING_TAKES_VOID, 1, [define if your recalc_sigpending takes void]) - fi -+ if test "x$ac_cv_linux_kernel_posix_lock_file_wait_arg" = "xyes" ; then -+ AC_DEFINE(POSIX_LOCK_FILE_WAIT_ARG, 1, [define if your linux kernel uses 3 arguments for posix_lock_file]) -+ fi - if test "x$ac_cv_linux_kernel_is_selinux" = "xyes" ; then - AC_DEFINE(LINUX_KERNEL_IS_SELINUX, 1, [define if your linux kernel uses SELinux features]) - fi -@@ -812,6 +817,9 @@ - if test "x$ac_cv_linux_sched_struct_task_struct_has_todo" = "xyes"; then - AC_DEFINE(STRUCT_TASK_STRUCT_HAS_TODO, 1, [define if your struct task_struct has todo]) - fi -+ if test "x$ac_cv_linux_sched_struct_task_struct_has_thread_info" = "xyes"; then -+ AC_DEFINE(STRUCT_TASK_STRUCT_HAS_THREAD_INFO, 1, [define if your struct task_struct has thread_info]) -+ fi - if test "x$ac_cv_linux_get_sb_has_struct_vfsmount" = "xyes"; then - AC_DEFINE(GET_SB_HAS_STRUCT_VFSMOUNT, 1, [define if your get_sb_nodev needs a struct vfsmount argument]) - fi ---- openafs.orig/src/afs/LINUX/osi_sleep.c -+++ openafs/src/afs/LINUX/osi_sleep.c -@@ -205,7 +205,11 @@ - #if defined(STRUCT_TASK_STRUCT_HAS_TODO) - !current->todo - #else -+#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - test_ti_thread_flag(current->thread_info, TIF_FREEZE) -+#else -+ test_ti_thread_flag(task_thread_info(current), TIF_FREEZE) -+#endif - #endif - #endif - ) -@@ -303,7 +307,11 @@ - #if defined(STRUCT_TASK_STRUCT_HAS_TODO) - !current->todo - #else -+#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - test_ti_thread_flag(current->thread_info, TIF_FREEZE) -+#else -+ test_ti_thread_flag(task_thread_info(current), TIF_FREEZE) -+#endif - #endif - #endif - ) ---- openafs.orig/src/afs/LINUX/osi_vfsops.c -+++ openafs/src/afs/LINUX/osi_vfsops.c -@@ -292,8 +292,10 @@ - { - struct vcache *vcp = (struct vcache *) foo; - -+#if defined(SLAB_CTOR_VERIFY) - if ((flags & (SLAB_CTOR_VERIFY|SLAB_CTOR_CONSTRUCTOR)) == - SLAB_CTOR_CONSTRUCTOR) -+#endif - inode_init_once(AFSTOV(vcp)); - } - ---- openafs.orig/src/afs/LINUX/osi_vnodeops.c -+++ openafs/src/afs/LINUX/osi_vnodeops.c -@@ -473,11 +473,11 @@ - #ifdef AFS_LINUX24_ENV - if ((code == 0 || flp->fl_type == F_UNLCK) && - (cmd == F_SETLK || cmd == F_SETLKW)) { --#ifdef AFS_LINUX26_ENV -+#ifdef POSIX_LOCK_FILE_WAIT_ARG -+ code = posix_lock_file(fp, flp, 0); -+#else - flp->fl_flags &=~ FL_SLEEP; - code = posix_lock_file(fp, flp); --#else -- code = posix_lock_file(fp, flp, 0); - #endif - if (code && flp->fl_type != F_UNLCK) { - struct AFS_FLOCK flock2; ---- openafs.orig/src/cf/linux-test4.m4 -+++ openafs/src/cf/linux-test4.m4 -@@ -444,6 +444,18 @@ - AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_exit_state)]) - - -+AC_DEFUN([LINUX_SCHED_STRUCT_TASK_STRUCT_HAS_THREAD_INFO], [ -+ AC_MSG_CHECKING([for thread_info in struct task_struct]) -+ AC_CACHE_VAL([ac_cv_linux_sched_struct_task_struct_has_thread_info], [ -+ AC_TRY_KBUILD( -+[#include ], -+[struct task_struct _tsk; -+printk("%d\n", _tsk.thread_info);], -+ ac_cv_linux_sched_struct_task_struct_has_thread_info=yes, -+ ac_cv_linux_sched_struct_task_struct_has_thread_info=no)]) -+ AC_MSG_RESULT($ac_cv_linux_sched_struct_task_struct_has_thread_info)]) -+ -+ - AC_DEFUN([LINUX_FS_STRUCT_SUPER_HAS_ALLOC_INODE], [ - AC_MSG_CHECKING([for alloc_inode in struct super_operations]) - AC_CACHE_VAL([ac_cv_linux_fs_struct_super_has_alloc_inode], [ -@@ -456,6 +468,17 @@ - AC_MSG_RESULT($ac_cv_linux_fs_struct_super_has_alloc_inode)]) - - -+AC_DEFUN([LINUX_KERNEL_POSIX_LOCK_FILE_WAIT_ARG], [ -+ AC_MSG_CHECKING([for 3rd argument in posix_lock_file found in new kernels]) -+ AC_CACHE_VAL([ac_cv_linux_kernel_posix_lock_file_wait_arg], [ -+ AC_TRY_KBUILD( -+[#include ], -+[posix_lock_file(0,0,0);], -+ ac_cv_linux_kernel_posix_lock_file_wait_arg=yes, -+ ac_cv_linux_kernel_posix_lock_file_wait_arg=no)]) -+ AC_MSG_RESULT($ac_cv_linux_kernel_posix_lock_file_wait_arg)]) -+ -+ - AC_DEFUN([LINUX_KERNEL_SOCK_CREATE], [ - AC_MSG_CHECKING([for 5th argument in sock_create found in some SELinux kernels]) - AC_CACHE_VAL([ac_cv_linux_kernel_sock_create_v], [ ---- openafs.orig/src/rx/LINUX/rx_kmutex.c -+++ openafs/src/rx/LINUX/rx_kmutex.c -@@ -122,7 +122,11 @@ - #if defined(STRUCT_TASK_STRUCT_HAS_TODO) - !current->todo - #else -+#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - test_ti_thread_flag(current->thread_info, TIF_FREEZE) -+#else -+ test_ti_thread_flag(task_thread_info(current), TIF_FREEZE) -+#endif - #endif - #endif - ) ---- openafs.orig/src/rx/LINUX/rx_knet.c -+++ openafs/src/rx/LINUX/rx_knet.c -@@ -173,7 +173,11 @@ - #if defined(STRUCT_TASK_STRUCT_HAS_TODO) - !current->todo - #else -+#if defined(STRUCT_TASK_STRUCT_HAS_THREAD_INFO) - test_ti_thread_flag(current->thread_info, TIF_FREEZE) -+#else -+ test_ti_thread_flag(task_thread_info(current), TIF_FREEZE) -+#endif - #endif - #endif - ) diff --git a/debian/patches/linux-2.6.22.1-proc b/debian/patches/linux-2.6.22.1-proc deleted file mode 100644 index 96aa78ac5..000000000 --- a/debian/patches/linux-2.6.22.1-proc +++ /dev/null @@ -1,104 +0,0 @@ -Fix for the proc structure changes in 2.6.22.1. Pulled from the upstream -stable branch, will be in 1.4.5. - ---- openafs.orig/src/afs/LINUX/osi_sysctl.c -+++ openafs/src/afs/LINUX/osi_sysctl.c -@@ -1,7 +1,7 @@ - /* - * osi_sysctl.c: Linux sysctl interface to OpenAFS - * -- * $Id: osi_sysctl.c,v 1.7.2.4 2007/02/22 21:49:01 shadow Exp $ -+ * $Id: osi_sysctl.c,v 1.7.2.5 2007/06/12 18:28:49 shadow Exp $ - * - * Written Jan 30, 2002 by Kris Van Hees (Sine Nomine Associates) - */ -@@ -27,35 +27,64 @@ - static struct ctl_table_header *afs_sysctl = NULL; - - static ctl_table afs_sysctl_table[] = { -- {1, "hm_retry_RO", -- &hm_retry_RO, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -- {2, "hm_retry_RW", -- &hm_retry_RW, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -- {3, "hm_retry_int", -- &hm_retry_int, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -- {4, "GCPAGs", -- &afs_gcpags, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -- {5, "rx_deadtime", -- &afs_rx_deadtime, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -- {6, "bkVolPref", -- &afs_bkvolpref, sizeof(afs_int32), 0644, NULL, -- &proc_dointvec} -- , -+ { -+ .ctl_name = 1, -+ .procname = "hm_retry_RO", -+ .data = &hm_retry_RO, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, -+ { -+ .ctl_name = 2, -+ .procname = "hm_retry_RW", -+ .data = &hm_retry_RW, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, -+ { -+ .ctl_name = 3, -+ .procname = "hm_retry_int", -+ .data = &hm_retry_int, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, -+ { -+ .ctl_name = 4, -+ .procname = "GCPAGs", -+ .data = &afs_gcpags, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, -+ { -+ .ctl_name = 5, -+ .procname = "rx_deadtime", -+ .data = &afs_rx_deadtime, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, -+ { -+ .ctl_name = 6, -+ .procname = "bkVolPref", -+ .data = &afs_bkvolpref, -+ .maxlen = sizeof(afs_int32), -+ .mode = 0644, -+ .proc_handler = &proc_dointvec -+ }, - {0} - }; - - static ctl_table fs_sysctl_table[] = { -- {1, "afs", NULL, 0, 0555, afs_sysctl_table}, -+ { -+ .ctl_name = 1, -+ .procname = "afs", -+ .mode = 0555, -+ .child = afs_sysctl_table -+ }, - {0} - }; - diff --git a/debian/patches/null-uuid-client b/debian/patches/null-uuid-client deleted file mode 100644 index e749d544f..000000000 --- a/debian/patches/null-uuid-client +++ /dev/null @@ -1,15 +0,0 @@ -Tell the client to never generate an all-zero UUID, even if the client -apparently doesn't have any network interfaces. Fixed upstream a -different way, so this patch can be dropped after 1.4.5 is released. - ---- openafs.orig/src/afs/afs_call.c -+++ openafs/src/afs/afs_call.c -@@ -858,6 +858,8 @@ - #if (!defined(AFS_NONFSTRANS)) || defined(AFS_AIX_IAUTH_ENV) - afs_nfsclient_init(); - #endif -+ if (afs_cb_interface.numberOfInterfaces < 1) -+ afs_uuid_create(&afs_cb_interface.uuid); - printf("found %d non-empty cache files (%d%%).\n", - afs_stats_cmperf.cacheFilesReused, - (100 * afs_stats_cmperf.cacheFilesReused) / diff --git a/debian/patches/null-uuid-server b/debian/patches/null-uuid-server deleted file mode 100644 index b676a0e9c..000000000 --- a/debian/patches/null-uuid-server +++ /dev/null @@ -1,41 +0,0 @@ -Treat clients that provide an all-zero UUID as if they don't support -UUIDs at all. Pulled from the upstream stable branch, will be in 1.4.5. - ---- openafs.orig/src/viced/host.c -+++ openafs/src/viced/host.c -@@ -74,6 +74,7 @@ - extern int lwps; /* the max number of server threads */ - extern afsUUID FS_HostUUID; - -+afsUUID nulluuid; - int CEs = 0; /* active clients */ - int CEBlocks = 0; /* number of blocks of CEs */ - struct client *CEFree = 0; /* first free client */ -@@ -1329,7 +1330,8 @@ - rx_PutConnection(cb_conn); - cb_conn=NULL; - H_LOCK; -- if (code == RXGEN_OPCODE) { -+ if ((code == RXGEN_OPCODE) || -+ (afs_uuid_equal(&interf.uuid, &nulluuid))) { - identP = (struct Identity *)malloc(sizeof(struct Identity)); - if (!identP) { - ViceLog(0, ("Failed malloc in h_GetHost_r\n")); -@@ -1452,7 +1454,8 @@ - rx_PutConnection(cb_conn); - cb_conn=NULL; - H_LOCK; -- if (code == RXGEN_OPCODE) { -+ if ((code == RXGEN_OPCODE) || -+ afs_uuid_equal(&interf.uuid, &nulluuid)) { - if (!identP) - identP = - (struct Identity *)malloc(sizeof(struct Identity)); -@@ -1662,6 +1665,7 @@ - void - h_InitHostPackage() - { -+ memset(&nulluuid, 0, sizeof(afsUUID)); - afsconf_GetLocalCell(confDir, localcellname, PR_MAXNAMELEN); - if (!local_realm[0]) { - if (afs_krb_get_lrealm(local_realm, 0) != 0 /*KSUCCESS*/) { diff --git a/debian/patches/pag-cleanup-lock b/debian/patches/pag-cleanup-lock deleted file mode 100644 index da7fb64a2..000000000 --- a/debian/patches/pag-cleanup-lock +++ /dev/null @@ -1,25 +0,0 @@ -Make sure the AFS lock is held when a user process in a PAG exits, since -otherwise we may crash. Pulled from the upstream stable branch, will be -in 1.4.5. - ---- openafs.orig/src/afs/LINUX/osi_groups.c -+++ openafs/src/afs/LINUX/osi_groups.c -@@ -594,13 +594,18 @@ - { - afs_uint32 pag = key->payload.value; - struct unixuser *pu; -+ int locked = ISAFS_GLOCK(); - -+ if (!locked) -+ AFS_GLOCK(); - pu = afs_FindUser(pag, -1, READ_LOCK); - if (pu) { - pu->ct.EndTimestamp = 0; - pu->tokenTime = 0; - afs_PutUser(pu, READ_LOCK); - } -+ if (!locked) -+ AFS_GUNLOCK(); - } - - struct key_type key_type_afs_pag = diff --git a/debian/patches/pt_util-man-page b/debian/patches/pt_util-man-page deleted file mode 100644 index 1210958ef..000000000 --- a/debian/patches/pt_util-man-page +++ /dev/null @@ -1,193 +0,0 @@ -Man page for pt_util. Pulled from the upstream stable branch, will be in -1.4.5. - ---- /dev/null -+++ openafs/doc/man-pages/pod8/pt_util.pod -@@ -0,0 +1,187 @@ -+=head1 NAME -+ -+pt_util - Load or dump a Protection Server database -+ -+=head1 SYNOPSIS -+ -+=for html -+
-+ -+B -+ S<<< [B<-w>] >>> S<<< [B<-user>] >>> S<<< [B<-group>] >>> -+ S<<< [B<-members>] >>> S<<< [B<-name>] >>> S<<< [B<-system>] >>> -+ S<<< [B<-xtra>] >>> S<<< [B<-prdb> >] >>> -+ S<<< [B<-datafile> >] >>> S<<< [B<-help>] >>> -+ -+=for html -+
-+ -+=head1 DESCRIPTION -+ -+The B command can be used to load or dump the protection -+database. It should only be used when B is not running. -+ -+The most likely reason to use it is to initialize the protection database -+when bringing up a new cell. The current syntax for this, presented -+below, needs improvement. B can also be used when problems are -+suspected with the database. It can be used to dump the database or -+portions thereof, in several different ways, and to reload it. -+ -+The textual representation of the database has the following form: -+For users, -+ -+ name flags/quota viceid ownerid creatorid -+ -+For groups, -+ -+ name flags/quota viceid ownerid creatorid -+ a-username a-user-viceid -+ -+The second line is repeated for each member of the group. When reading -+the database, membership is not reported unless B<-members> is also -+included. -+ -+=head1 OPTIONS -+ -+If you don't specify any options, the only thing you'll learn is the ubik -+database epoch and version. -+ -+=over 4 -+ -+=item B<-w> -+ -+Write to the protection database instead of reading. Only the file -+arguments make sense in combination with this argument. -+ -+=item B<-user> -+ -+When reading, display users. -+ -+=item B<-group> -+ -+When reading, display groups (but not necessarily members). -+ -+=item B<-members> -+ -+When reading, display groups and also group members. -+ -+=item B<-name> -+ -+When reading, -+follow name hashes, instead of id hashes. -+This may print different information if the database was corrupted. -+Otherwise, it should print exactly the same information, except -+in a different order. -+ -+=item B<-system> -+ -+When reading, display system data, or more precisely, do not display -+entries with a viced <= -32768 or >= +97537. -+ -+=item B<-xtra> -+ -+When reading, display extra users and groups, or more precisely, do not -+display entries that are in the range -32767...+97536 inclusive. -+ -+=item B<-prdb> > -+ -+Specifies the complete pathname of the file in which the Protection -+Database resides. Provide the complete name, including the ending -+F<.DB0>. -+ -+=item B<-datafile> > -+ -+Specify the file to which to dump (or B<-w> from which to read) textual -+database records. -+ -+=back -+ -+=head1 CAUTIONS -+ -+The file dump format does not include supergroup information, so should -+not be used if you have and are using groups within groups. -+ -+In all cases, entry timestamps and other information is also not -+preserved. -+ -+The epoch and version are reported on standard error. On little-endian -+machines, they'll be byte swapped, so may be very random. -+ -+=head1 EXAMPLES -+ -+The following example shows how to initialize the database from scratch. -+ -+Before you do this, make sure B is not running. If you have -+multiple database servers, make sure F does not exist on any -+server machine. -+ -+Now, type this in EXACTLY, including the leading space on the line -+indicated. But do use Control-D at the end, not up-arrow D. -+ -+ pt_util -w -+ admin 128/20 1 -204 -204 -+ system:administrators 130/20 -204 -204 -204 -+ admin 1 -+ ^D -+ -+You will see this: -+ -+ # pt_util -w -+ pt_util: /usr/afs/db/prdb.DB0: Bad UBIK_MAGIC. Is 0 should be 354545 -+ Ubik Version is: 2.0 -+ admin 128/20 1 -204 -204 -+ system:administrators 130/20 -204 -204 -204 -+ Error while creating system:administrators: Entry for id already exists -+ admin 1 -+ pt_util: Ubik Version number changed during execution. -+ Old Version = 2.0, new version = 33554432.0 -+ # -+ -+To make a complete copy of the database, -+ -+ # pt_util -user -members -datafile /tmp/out -+ -+To load from the complete copy, -+ -+ # pt_util -w -datafile /tmp/out -+ -+Don't do this until you read cautions, above. -+ -+=head1 PRIVILEGE REQUIRED -+ -+The issuer must be logged in as the superuser C on a file server -+machine to use B. -+ -+=head1 SEE ALSO -+ -+L, -+L -+ -+=head1 COPYRIGHT -+ -+The following copyright covers this documentation: -+ -+Copyright (c) 2005 The Regents of the University of Michigan. ALL RIGHTS -+RESERVED. -+ -+Permission is granted to use, copy, create derivative works and -+redistribute this software and such derivative works for any purpose, so -+long as the name of the University of Michigan is not used in any -+advertising or publicity pertaining to the use or distribution of this -+software without specific, written prior authorization. If the above -+copyright notice or any other identification of the University of Michigan -+is included in any copy of any portion of this software, then the -+disclaimer below must also be included. -+ -+This software is provided as is, without representation from the -+University of Michigan as to its fitness for any purpose, and without -+warranty by the University of Michigan of any kind, either express or -+implied, including without limitation the implied warranties of -+merchantability and fitness for a particular purpose. The regents of the -+University of Michigan shall not be liable for any damages, including -+special, indirect, incidental, or consequential damages, with respect to -+any claim arising out of or in connection with the use of the software, -+even if it has been or is hereafter advised of the possibility of such -+damages. -+ -+=cut diff --git a/debian/patches/series b/debian/patches/series index 282f390d2..788df39d8 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -6,15 +6,5 @@ pam-build bos-permissions compiler-flags no-admin-reference -amd64-syscall-probe -des-alignment -ka-forwarder -kbuild-assembly -linux-2.6.22 -linux-2.6.22.1-proc -null-uuid-client -null-uuid-server -pag-cleanup-lock ucontext-everywhere -pt_util-man-page paravirt-workaround diff --git a/debian/patches/ucontext-everywhere b/debian/patches/ucontext-everywhere index 326cc6376..5e1e53fc4 100644 --- a/debian/patches/ucontext-everywhere +++ b/debian/patches/ucontext-everywhere @@ -15,76 +15,12 @@ upstream stable branch, will be in 1.4.5. #endif /* AFS_PARAM_H */ #else /* !defined(UKERNEL) */ ---- openafs.orig/src/config/param.ia64_linux24.h -+++ openafs/src/config/param.ia64_linux24.h -@@ -87,6 +87,7 @@ - #endif - #endif /* KERNEL */ - -+#define USE_UCONTEXT /* should be in afsconfig.h */ - - #endif /* _PARAM_IA64_LINUX20_H_ */ - -@@ -157,6 +158,7 @@ - #define CMSERVERPREF - #endif - -+#define USE_UCONTEXT /* should be in afsconfig.h */ - - #endif /* AFS_PARAM_H */ - ---- openafs.orig/src/config/param.ia64_linux26.h -+++ openafs/src/config/param.ia64_linux26.h -@@ -96,6 +96,7 @@ - #endif - #endif /* KERNEL */ - -+#define USE_UCONTEXT /* should be in afsconfig.h */ - - #endif /* _PARAM_IA64_LINUX20_H_ */ - -@@ -167,6 +168,7 @@ - #define CMSERVERPREF - #endif - -+#define USE_UCONTEXT /* should be in afsconfig.h */ - - #endif /* AFS_PARAM_H */ - --- openafs.orig/src/config/param.parisc_linux24.h +++ openafs/src/config/param.parisc_linux24.h @@ -70,6 +70,11 @@ #endif #endif /* KERNEL */ -+#ifdef __GLIBC__ -+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) -+#define USE_UCONTEXT -+#endif -+#endif - #endif /* AFS_PARAM_H */ - - #else /* !defined(UKERNEL) */ ---- openafs.orig/src/config/param.ppc64_linux26.h -+++ openafs/src/config/param.ppc64_linux26.h -@@ -76,6 +76,11 @@ - #endif - #endif /* KERNEL */ - -+#ifdef __GLIBC__ -+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) -+#define USE_UCONTEXT -+#endif -+#endif - #endif /* _PARAM_PPC64_LINUX20_H_ */ - - #else /* !defined(UKERNEL) */ ---- openafs.orig/src/config/param.ppc_linux26.h -+++ openafs/src/config/param.ppc_linux26.h -@@ -74,6 +74,11 @@ - #endif - #endif /* KERNEL */ - +#ifdef __GLIBC__ +#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) +#define USE_UCONTEXT @@ -121,31 +57,3 @@ upstream stable branch, will be in 1.4.5. #endif /* AFS_PARAM_H */ #else /* !defined(UKERNEL) */ ---- openafs.orig/src/config/param.sparc64_linux26.h -+++ openafs/src/config/param.sparc64_linux26.h -@@ -95,6 +95,11 @@ - #endif - #endif - -+#ifdef __GLIBC__ -+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) -+#define USE_UCONTEXT -+#endif -+#endif - #endif /* _PARAM_SPARC64_LINUX26_H_ */ - - #else /* !defined(UKERNEL) */ ---- openafs.orig/src/config/param.sparc_linux24.h -+++ openafs/src/config/param.sparc_linux24.h -@@ -98,6 +98,11 @@ - #endif - #endif - -+#ifdef __GLIBC__ -+#if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 3) -+#define USE_UCONTEXT -+#endif -+#endif - #endif /* AFS_PARAM_H */ - - #else /* !defined(UKERNEL) */