diff --git a/3.4.2-rpc_pipefs.patch b/3.4.2-rpc_pipefs.patch new file mode 100644 index 0000000..8c8faf5 --- /dev/null +++ b/3.4.2-rpc_pipefs.patch @@ -0,0 +1,34 @@ +diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c +index 0404047..21fde99 100644 +--- a/net/sunrpc/rpc_pipe.c ++++ b/net/sunrpc/rpc_pipe.c +@@ -71,7 +71,9 @@ static void rpc_purge_list(wait_queue_head_t *waitq, struct list_head *head, + msg->errno = err; + destroy_msg(msg); + } while (!list_empty(head)); +- wake_up(waitq); ++ ++ if (waitq) ++ wake_up(waitq); + } + + static void +@@ -91,11 +93,9 @@ rpc_timeout_upcall_queue(struct work_struct *work) + } + dentry = dget(pipe->dentry); + spin_unlock(&pipe->lock); +- if (dentry) { +- rpc_purge_list(&RPC_I(dentry->d_inode)->waitq, +- &free_list, destroy_msg, -ETIMEDOUT); +- dput(dentry); +- } ++ rpc_purge_list(dentry ? &RPC_I(dentry->d_inode)->waitq : NULL, ++ &free_list, destroy_msg, -ETIMEDOUT); ++ dput(dentry); + } + + ssize_t rpc_pipe_generic_upcall(struct file *filp, struct rpc_pipe_msg *msg, +-- +1.7.7.6 + + \ No newline at end of file diff --git a/PKGBUILD b/PKGBUILD index b0b6c4e..391744e 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -8,7 +8,7 @@ pkgname=('linux' 'linux-headers' 'linux-docs') # Build stock -ARCH kernel _kernelname=${pkgname#linux} _basekernel=3.4 pkgver=${_basekernel}.2 -pkgrel=1 +pkgrel=2 arch=('i686' 'x86_64') url="http://www.kernel.org/" license=('GPL2') @@ -22,7 +22,8 @@ source=("http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.4.tar.xz" "${pkgname}.preset" 'fix-acerhdf-1810T-bios.patch' 'change-default-console-loglevel.patch' - 'i915-fix-ghost-tv-output.patch') + 'i915-fix-ghost-tv-output.patch' + '3.4.2-rpc_pipefs.patch') md5sums=('967f72983655e2479f951195953e8480' 'ac52d3d82c20c7e80740fc5fb00b6ed4' '3f2c307c8ffae67f60c13ef69af8364a' @@ -30,7 +31,8 @@ md5sums=('967f72983655e2479f951195953e8480' 'eb14dcfd80c00852ef81ded6e826826a' '38c1fd4a1f303f1f6c38e7f082727e2f' '9d3c56a4b999c8bfbd4018089a62f662' - '263725f20c0b9eb9c353040792d644e5') + '263725f20c0b9eb9c353040792d644e5' + '18b3877f9014c8cdd5eb8f6a9e8a3a3a') build() { cd "${srcdir}/linux-${_basekernel}" @@ -38,6 +40,8 @@ build() { # add upstream patch patch -p1 -i "${srcdir}/patch-${pkgver}" + # fix nfs4 regression + patch -Np1 -i "${srcdir}/3.4.2-rpc_pipefs.patch" # add latest fixes from stable queue, if needed # http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git diff --git a/linux.install b/linux.install index 8866069..ba91d5a 100644 --- a/linux.install +++ b/linux.install @@ -2,7 +2,7 @@ # arg 2: the old package version KERNEL_NAME= -KERNEL_VERSION=3.4.2-1-ARCH +KERNEL_VERSION=3.4.2-2-ARCH post_install () { # updating module dependencies