summaryrefslogtreecommitdiffstats
path: root/main/iscsitarget-grsec
diff options
context:
space:
mode:
Diffstat (limited to 'main/iscsitarget-grsec')
-rw-r--r--main/iscsitarget-grsec/APKBUILD44
-rw-r--r--main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch78
-rw-r--r--main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.29.patch40
3 files changed, 162 insertions, 0 deletions
diff --git a/main/iscsitarget-grsec/APKBUILD b/main/iscsitarget-grsec/APKBUILD
new file mode 100644
index 000000000..a555918a8
--- /dev/null
+++ b/main/iscsitarget-grsec/APKBUILD
@@ -0,0 +1,44 @@
+# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
+
+_flavor=grsec
+_realname=iscsitarget
+# source the kernel version
+if [ -f ../linux-$_flavor/APKBUILD ]; then
+ . ../linux-$_flavor/APKBUILD
+fi
+_abi_release=$pkgver-${_flavor}
+
+# get pkgver from iscsitarget
+if [ -f ../iscsitarget/APKBUILD ]; then
+ . ../iscsitarget/APKBUILD
+fi
+pkgname=${_realname}-${_flavor}
+pkgver=${pkgver:-0.4.17}
+pkgrel=3
+pkgdesc="$_flavor kernel modules for iscsitarget"
+url="http://iscsitarget.sourceforge.net/"
+license="GPL-2"
+depends=
+install=
+makedepends="linux-${_flavor}-dev"
+subpackages=
+source="http://downloads.sourceforge.net/$_realname/$_realname-$pkgver.tar.gz
+ iscsitarget-0.4.17+linux-2.6.28.patch
+ iscsitarget-0.4.17+linux-2.6.29.patch
+ "
+
+build() {
+ cd "$srcdir"/$_realname-$pkgver
+ for i in ../*.patch; do
+ msg "Applying $i"
+ patch -p1 < $i || return 1
+ done
+
+ unset ARCH
+ local ksrc=/usr/src/linux-headers-${_abi_release}
+ make KSRC="$ksrc" kernel || return 1
+ make KSRC="$ksrc" DISTDIR="$pkgdir" install-kernel || return 1
+}
+md5sums="e79b437695fc50e7d054631855a16b1b iscsitarget-0.4.17.tar.gz
+f58dde50f72b04b7737b33e517e56208 iscsitarget-0.4.17+linux-2.6.28.patch
+a7be10bb04c9014807e39db75c9cd468 iscsitarget-0.4.17+linux-2.6.29.patch"
diff --git a/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch
new file mode 100644
index 000000000..ec35cd526
--- /dev/null
+++ b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.28.patch
@@ -0,0 +1,78 @@
+From c5e70fc826aad5efb786c47d294e3c0c76246d63 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Diego=20E.=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Sat, 3 Jan 2009 00:09:43 +0100
+Subject: [PATCH] Fix building with Linux kernel 2.6.28 and later.
+
+With changeset 30c40d2c01f68c7eb1a41ab3552bdaf5dbf300d4 of the Linux
+kernel, the functions open_bdev_excl and close_bdev_excl were replaced with
+functionally-equivalent open_bdev_exclusive and close_bdev_exclusive.
+
+The new interface uses fmode_t instead of integer flags to carry on the
+opening mode for a block device, thus require some minor changes in the
+calls.
+---
+ kernel/block-io.c | 21 +++++++++++++++++++++
+ 1 files changed, 21 insertions(+), 0 deletions(-)
+
+diff --git a/kernel/block-io.c b/kernel/block-io.c
+index e4a25f7..2c5f6f6 100644
+--- a/kernel/block-io.c
++++ b/kernel/block-io.c
+@@ -18,6 +18,14 @@
+ #include "iscsi_dbg.h"
+ #include "iotype.h"
+
++#include <linux/version.h>
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 28)
++# define HAVE_OPEN_BDEV_EXCLUSIVE 1
++#else
++# define HAVE_OPEN_BDEV_EXCLUSIVE 0
++#endif
++
+ struct blockio_data {
+ char *path;
+ struct block_device *bdev;
+@@ -154,14 +160,22 @@ blockio_open_path(struct iet_volume *volume, const char *path)
+ {
+ struct blockio_data *bio_data = volume->private;
+ struct block_device *bdev;
++#if HAVE_OPEN_BDEV_EXCLUSIVE
++ fmode_t mode = FMODE_READ | ( LUReadonly(volume) ? 0 : FMODE_WRITE );
++#else
+ int flags = LUReadonly(volume) ? MS_RDONLY : 0;
++#endif
+ int err = 0;
+
+ bio_data->path = kstrdup(path, GFP_KERNEL);
+ if (!bio_data->path)
+ return -ENOMEM;
+
++#if HAVE_OPEN_BDEV_EXCLUSIVE
++ bdev = open_bdev_exclusive(path, mode, THIS_MODULE);
++#else
+ bdev = open_bdev_excl(path, flags, THIS_MODULE);
++#endif
+ if (IS_ERR(bdev)) {
+ err = PTR_ERR(bdev);
+ eprintk("Can't open device %s, error %d\n", path, err);
+@@ -323,9 +337,16 @@ static void
+ blockio_detach(struct iet_volume *volume)
+ {
+ struct blockio_data *bio_data = volume->private;
++#if HAVE_OPEN_BDEV_EXCLUSIVE
++ fmode_t mode = FMODE_READ | ( LUReadonly(volume) ? 0 : FMODE_WRITE );
++#endif
+
+ if (bio_data->bdev)
++#if HAVE_OPEN_BDEV_EXCLUSIVE
++ close_bdev_exclusive(bio_data->bdev, mode);
++#else
+ close_bdev_excl(bio_data->bdev);
++#endif
+ kfree(bio_data->path);
+
+ kfree(volume->private);
+--
+1.6.0.6
+
diff --git a/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.29.patch b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.29.patch
new file mode 100644
index 000000000..092fdc3fd
--- /dev/null
+++ b/main/iscsitarget-grsec/iscsitarget-0.4.17+linux-2.6.29.patch
@@ -0,0 +1,40 @@
+From 81373580a641732a7e4610c3d39af0c68007b892 Mon Sep 17 00:00:00 2001
+From: =?utf-8?q?Diego=20Elio=20'Flameeyes'=20Petten=C3=B2?= <flameeyes@gmail.com>
+Date: Wed, 25 Mar 2009 16:14:46 +0100
+Subject: [PATCH 2/2] Fix building with Linux kernel 2.6.29 and later.
+
+When building for Linux 2.6.29 or later, instead of using the NIP6
+macro (that has been removed) use the new %p6 format specifier.
+---
+ kernel/conn.c | 6 ++++++
+ 1 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/kernel/conn.c b/kernel/conn.c
+index f96e2b6..ab561f9 100644
+--- a/kernel/conn.c
++++ b/kernel/conn.c
+@@ -6,6 +6,7 @@
+
+ #include <linux/file.h>
+ #include <linux/ip.h>
++#include <linux/version.h>
+ #include <net/tcp.h>
+
+ #include "iscsi.h"
+@@ -47,8 +48,13 @@ void conn_info_show(struct seq_file *seq, struct iscsi_session *session)
+ break;
+ case AF_INET6:
+ snprintf(buf, sizeof(buf),
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)
++ "[%p6]",
++ &(inet6_sk(sk)->daddr));
++#else
+ "[%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]",
+ NIP6(inet6_sk(sk)->daddr));
++#endif
+ break;
+ default:
+ break;
+--
+1.6.2
+