summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2012-05-31 16:32:49 +0000
committerParabola <dev@list.parabolagnulinux.org>2012-05-31 16:32:49 +0000
commit2ed96c6eb798c762b61a93a8b4cf80220c00ac1f (patch)
treec5236b776b3871b4608cb683bb2500b9c20567ba
parentf5a8de28b86c2c838a28e79aa54f8b4c3fbd869e (diff)
Thu May 31 16:32:49 UTC 2012
-rw-r--r--community-testing/multipath-tools/all-in-one.patch209
-rw-r--r--community/libmediainfo/gcc-4.7.patch79
-rw-r--r--extra/cups-filters/PKGBUILD33
-rw-r--r--kernels/linux-libre-aufs_friendly/CVE-2012-0056.patch268
-rw-r--r--kernels/linux-libre-aufs_friendly/dib0700-fix.patch1487
-rw-r--r--kernels/linux-libre-aufs_friendly/fix-i915.patch26
-rw-r--r--kernels/linux-libre-aufs_friendly/i915-fix-incorrect-error-message.patch22
-rw-r--r--kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch55
-rw-r--r--kernels/linux-libre-aufs_friendly/iwlagn-fix-NULL-pointer-dereference.patch38
-rw-r--r--kernels/linux-libre-aufs_friendly/md-raid10-fix-bug-when-activating-a-hot-spare.patch40
-rw-r--r--kernels/linux-libre-aufs_friendly/usb-add-reset-resume-quirk-for-several-webcams.patch99
-rw-r--r--libre-testing/icedove-libre/PKGBUILD87
-rw-r--r--libre-testing/icedove-libre/channel-prefs.js9
-rw-r--r--libre-testing/icedove-libre/gcc47.patch44
-rw-r--r--libre-testing/icedove-libre/icedove.install12
-rw-r--r--libre-testing/icedove-libre/makefile.patch11
-rw-r--r--libre-testing/icedove-libre/mozconfig47
-rw-r--r--libre-testing/icedove-libre/rules.patch16
-rw-r--r--libre-testing/icedove-libre/searchplugins-libre.patch141
-rw-r--r--libre-testing/icedove-libre/vendor.js12
-rw-r--r--libre/foomatic/PKGBUILD92
-rw-r--r--libre/ghostscript-libre/SRCBUILD32
-rw-r--r--libre/ghostscript-libre/ghostscript-cups-rgbw.patch263
-rw-r--r--libre/ghostscript-libre/ghostscript-gpl-9.04-freetype-underlinking.patch12
-rw-r--r--libre/ghostscript-libre/gs_bug691759and691760.diff215
-rw-r--r--libre/kdenetwork-libre/PKGBUILD121
-rw-r--r--libre/kdenetwork-libre/kdenetwork-kget.install12
-rw-r--r--libre/kdenetwork-libre/kdenetwork-kopete.install12
-rw-r--r--libre/kdenetwork-libre/kdenetwork-kppp.install12
-rw-r--r--libre/kdenetwork-libre/kdenetwork.install11
-rw-r--r--libre/linux-libre-lts/CVE-2012-0056.patch269
-rw-r--r--libre/linux-libre/CVE-2012-0056.patch268
-rw-r--r--libre/linux-libre/dib0700-fix.patch1487
-rw-r--r--libre/linux-libre/ext4-options.patch50
-rw-r--r--libre/linux-libre/fix-i915.patch26
-rw-r--r--libre/linux-libre/fix-memblock-3.3.x.patch65
-rw-r--r--libre/linux-libre/fix-r8712u-3.3.2.patch56
-rw-r--r--libre/linux-libre/i915-fix-incorrect-error-message.patch22
-rw-r--r--libre/linux-libre/i915-gpu-finish.patch55
-rw-r--r--libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch38
-rw-r--r--libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch40
-rw-r--r--libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch99
-rw-r--r--libre/thunderbird-libre/gcc46.patch12
-rw-r--r--libre/thunderbird-libre/gnuzilla-addons.patch36
-rw-r--r--libre/thunderbird-libre/libvpx.patch12
-rw-r--r--libre/thunderbird-libre/mozilla-notify.patch12
-rw-r--r--libre/thunderbird-libre/python2.7.patch11
-rw-r--r--libre/thunderbird-libre/thunderbird-appversion.patch12
-rw-r--r--libre/thunderbird-libre/thunderbird-preferences.patch30
-rw-r--r--libre/thunderbird-libre/thunderbird-shared-error.patch15
-rw-r--r--libre/thunderbird-libre/xulrunner-png14.patch11
-rw-r--r--testing/krb5/PKGBUILD77
-rw-r--r--testing/krb5/krb5-1.10.1-gcc47.patch11
-rw-r--r--testing/krb5/krb5-kadmind40
-rw-r--r--testing/krb5/krb5-kdc40
-rw-r--r--testing/krb5/krb5-kpropd40
-rw-r--r--testing/mdadm/PKGBUILD58
-rw-r--r--testing/mdadm/disable-werror.patch11
-rw-r--r--testing/mdadm/linux-3.0.patch45
-rwxr-xr-xtesting/mdadm/mdadm42
-rw-r--r--testing/mdadm/mdadm.conf67
-rw-r--r--testing/mdadm/mdadm.service8
-rwxr-xr-xtesting/mdadm/mdadm_hook49
-rw-r--r--testing/mdadm/mdadm_install45
-rw-r--r--testing/mdadm/mdadm_udev_install24
-rw-r--r--testing/nfs-utils/PKGBUILD105
-rw-r--r--testing/nfs-utils/blkmapd.service11
-rw-r--r--testing/nfs-utils/exports15
-rw-r--r--testing/nfs-utils/idmapd.conf14
-rw-r--r--testing/nfs-utils/nfs40
-rw-r--r--testing/nfs-utils/nfs-common315
-rw-r--r--testing/nfs-utils/nfs-common.conf40
-rw-r--r--testing/nfs-utils/nfs-server299
-rw-r--r--testing/nfs-utils/nfs-server.conf29
-rw-r--r--testing/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch39
-rw-r--r--testing/nfs-utils/nfs-utils-1.1.4-no-exec.patch15
-rw-r--r--testing/nfs-utils/nfs-utils.conf1
-rw-r--r--testing/nfs-utils/nfs-utils.install32
-rw-r--r--testing/nfs-utils/nfsd.service16
-rw-r--r--testing/nfs-utils/proc-fs-nfsd.mount8
-rw-r--r--testing/nfs-utils/rpc-gssd.service12
-rw-r--r--testing/nfs-utils/rpc-idmapd.service12
-rw-r--r--testing/nfs-utils/rpc-mountd.service12
-rw-r--r--testing/nfs-utils/rpc-statd.service12
-rw-r--r--testing/nfs-utils/rpc-svcgssd.service12
-rw-r--r--testing/nfs-utils/start-statd.patch22
-rw-r--r--testing/nfs-utils/var-lib-nfs-rpc_pipefs.mount7
-rw-r--r--~lukeshu/parabolaweb-git/PKGBUILD37
-rw-r--r--~lukeshu/parabolaweb-git/parabolaweb.install65
89 files changed, 0 insertions, 7870 deletions
diff --git a/community-testing/multipath-tools/all-in-one.patch b/community-testing/multipath-tools/all-in-one.patch
deleted file mode 100644
index ff8f6824c..000000000
--- a/community-testing/multipath-tools/all-in-one.patch
+++ /dev/null
@@ -1,209 +0,0 @@
-diff -rupN upstream/Makefile.inc devel/Makefile.inc
---- upstream/Makefile.inc 2010-05-22 14:01:58.000000000 +0200
-+++ devel/Makefile.inc 2012-05-26 10:14:46.969786387 +0200
-@@ -32,11 +32,10 @@ rcdir = $(prefix)/etc/init.d
- syslibdir = $(prefix)/$(LIB)
- libdir = $(prefix)/$(LIB)/multipath
-
--GZIP = /bin/gzip -9 -c
- INSTALL_PROGRAM = install
-
--OPTFLAGS = -pipe -g -Wall -Wunused -Wstrict-prototypes
--CFLAGS = $(OPTFLAGS) -fPIC -DLIB_STRING=\"${LIB}\"
-+OPTFLAGS = -Wall -Wunused -Wstrict-prototypes
-+CFLAGS += $(OPTFLAGS) -fPIC -DLIB_STRING=\"${LIB}\"
- SHARED_FLAGS = -shared
-
- %.o: %.c
-diff -rupN upstream/kpartx/Makefile devel/kpartx/Makefile
---- upstream/kpartx/Makefile 2010-05-22 14:01:58.000000000 +0200
-+++ devel/kpartx/Makefile 2012-05-26 10:23:38.909780754 +0200
-@@ -6,7 +6,7 @@ include ../Makefile.inc
-
- CFLAGS += -I. -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
-
--LDFLAGS = -ldevmapper
-+LIBS = -ldevmapper
- OBJS = bsd.o dos.o kpartx.o solaris.o unixware.o dasd.o sun.o \
- gpt.o mac.o crc32.o lopart.o xstrncpy.o devmapper.o
- EXEC = kpartx
-@@ -14,22 +14,22 @@ EXEC = kpartx
- all: $(EXEC)
-
- $(EXEC): $(OBJS)
-- $(CC) $(OBJS) -o $(EXEC) $(LDFLAGS)
-- $(GZIP) $(EXEC).8 > $(EXEC).8.gz
-+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $(EXEC)
-
- install: $(EXEC) $(EXEC).8
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(libudevdir)
- $(INSTALL_PROGRAM) -m 755 kpartx_id $(DESTDIR)$(libudevdir)
-- $(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
-- $(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)/etc/udev/rules.d/
-+ $(INSTALL_PROGRAM) -d $(DESTDIR)/usr/lib/udev/rules.d
-+ $(INSTALL_PROGRAM) -m 644 kpartx.rules $(DESTDIR)/usr/lib/udev/rules.d/66-kpartx.rules
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
-- $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
-+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)
-
- uninstall:
- rm -f $(DESTDIR)$(bindir)/$(EXEC)
-- rm -f $(DESTDIR)$(mandir)/$(EXEC).8.gz
-+ rm -f $(DESTDIR)$(mandir)/$(EXEC).8
-+ rm -f $(DESTDIR)/usr/lib/udev/rules.d/66-kpartx.rules
-
- clean:
-- rm -f core *.o $(EXEC) *.gz
-+ rm -f core *.o $(EXEC)
-diff -rupN upstream/kpartx/kpartx.rules devel/kpartx/kpartx.rules
---- upstream/kpartx/kpartx.rules 2010-05-22 14:01:58.000000000 +0200
-+++ devel/kpartx/kpartx.rules 2012-05-26 10:30:32.769776372 +0200
-@@ -27,9 +27,9 @@ ENV{DM_PART}=="?*", \
-
- # Create dm tables for partitions
- ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="mpath-*", \
-- RUN+="/sbin/kpartx -a -p -part /dev/$name"
-+ RUN+="/usr/sbin/kpartx -a -p -part /dev/$name"
- ENV{DM_STATE}=="ACTIVE", ENV{DM_UUID}=="dmraid-*", \
-- RUN+="/sbin/kpartx -a -p -part /dev/$name"
-+ RUN+="/usr/sbin/kpartx -a -p -part /dev/$name"
-
- LABEL="kpartx_end"
-
-diff -rupN upstream/multipath/Makefile devel/multipath/Makefile
---- upstream/multipath/Makefile 2010-05-22 14:01:58.000000000 +0200
-+++ devel/multipath/Makefile 2012-05-26 10:22:38.819781391 +0200
-@@ -7,32 +7,30 @@ include ../Makefile.inc
- OBJS = main.o
-
- CFLAGS += -I$(multipathdir)
--LDFLAGS += -lpthread -ldevmapper -ldl -lmultipath -L$(multipathdir)
-+LIBS = -lpthread -ldevmapper -ldl -L$(multipathdir) -lmultipath
-
- EXEC = multipath
-
- all: $(EXEC)
-
- $(EXEC): $(OBJS)
-- $(CC) $(CFLAGS) $(OBJS) -o $(EXEC) $(LDFLAGS)
-- $(GZIP) $(EXEC).8 > $(EXEC).8.gz
-- $(GZIP) $(EXEC).conf.5 > $(EXEC).conf.5.gz
-+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $(EXEC)
-
- install:
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)/
-- $(INSTALL_PROGRAM) -d $(DESTDIR)/etc/udev/rules.d
-- $(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)/etc/udev/rules.d/
-+ $(INSTALL_PROGRAM) -d $(DESTDIR)/usr/lib/udev/rules.d
-+ $(INSTALL_PROGRAM) -m 644 multipath.rules $(DESTDIR)/usr/lib/udev/rules.d/65-multipath.rules
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
-- $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
-+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(man5dir)
-- $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5.gz $(DESTDIR)$(man5dir)
-+ $(INSTALL_PROGRAM) -m 644 $(EXEC).conf.5 $(DESTDIR)$(man5dir)
-
- uninstall:
-- rm $(DESTDIR)/etc/udev/rules.d/multipath.rules
-- rm $(DESTDIR)$(bindir)/$(EXEC)
-- rm $(DESTDIR)$(mandir)/$(EXEC).8.gz
-- rm $(DESTDIR)$(man5dir)/$(EXEC).conf.5.gz
-+ rm -f $(DESTDIR)/usr/lib/udev/rules.d/65-multipath.rules
-+ rm -f $(DESTDIR)$(bindir)/$(EXEC)
-+ rm -f $(DESTDIR)$(mandir)/$(EXEC).8
-+ rm -f $(DESTDIR)$(man5dir)/$(EXEC).conf.5
-
- clean:
-- rm -f core *.o $(EXEC) *.gz
-+ rm -f core *.o $(EXEC)
-diff -rupN upstream/multipath/multipath.rules devel/multipath/multipath.rules
---- upstream/multipath/multipath.rules 2010-05-22 14:01:58.000000000 +0200
-+++ devel/multipath/multipath.rules 2012-05-26 10:17:34.849784609 +0200
-@@ -1,7 +1,24 @@
--#
--# udev rules for multipathing.
--# The persistent symlinks are created with the kpartx rules
--#
-+# multipath wants the devmaps presented as meaninglful device names
-+# so name them after their devmap name
-+SUBSYSTEM!="block", GOTO="end_mpath"
-
--# socket for uevents
--SUBSYSTEM=="block", RUN+="socket:/org/kernel/dm/multipath_event"
-+ENV{MPATH_SBIN_PATH}="/sbin"
-+TEST!="$env{MPATH_SBIN_PATH}/multipath", ENV{MPATH_SBIN_PATH}="/usr/sbin"
-+
-+ACTION=="add", ENV{DEVTYPE}!="partition", \
-+ ENV{DM_MULTIPATH_DEVICE_PATH}!="1", \
-+ PROGRAM=="$env{MPATH_SBIN_PATH}/multipath -c $tempnode", \
-+ ENV{DM_MULTIPATH_DEVICE_PATH}="1"
-+
-+ENV{DM_MULTIPATH_DEVICE_PATH}=="1", ENV{DEVTYPE}!="partition", \
-+ RUN+="/sbin/partx -d --nr 1-1024 $env{DEVNAME}"
-+
-+RUN+="socket:/org/kernel/dm/multipath_event"
-+KERNEL!="dm-*", GOTO="end_mpath"
-+ACTION!="change", GOTO="end_mpath"
-+ENV{DM_UUID}=="mpath-?*|part[0-9]*-mpath-?*", OPTIONS+="link_priority=10"
-+ENV{DM_UUID}!="mpath-?*", GOTO="end_mpath"
-+ENV{DM_SUSPENDED}=="1", GOTO="end_mpath"
-+ENV{DM_ACTION}=="PATH_FAILED", GOTO="end_mpath"
-+RUN+="$env{MPATH_SBIN_PATH}/kpartx -a -p p $tempnode"
-+LABEL="end_mpath"
-diff -rupN upstream/multipath-tools.spec.in devel/multipath-tools.spec.in
---- upstream/multipath-tools.spec.in 2010-05-22 14:01:58.000000000 +0200
-+++ devel/multipath-tools.spec.in 2012-05-26 10:24:16.989780353 +0200
-@@ -47,8 +47,8 @@ rm -rf $RPM_BUILD_ROOT
- %{prefix}/usr/share/man/man8/multipathd.8.gz
- %{prefix}/usr/share/man/man5/multipath.conf.5.gz
- %{prefix}/sbin/multipathd
--%{prefix}/etc/udev/rules.d/multipath.rules
--%{prefix}/etc/udev/rules.d/kpartx.rules
-+%{prefix}/usr/lib/udev/rules.d/multipath.rules
-+%{prefix}/usr/lib/udev/rules.d/kpartx.rules
- %{prefix}/lib/udev/kpartx_id
- %{prefix}/lib/multipath/*.so
-
-diff -rupN upstream/multipathd/Makefile devel/multipathd/Makefile
---- upstream/multipathd/Makefile 2010-05-22 14:01:58.000000000 +0200
-+++ devel/multipathd/Makefile 2012-05-26 10:14:46.969786387 +0200
-@@ -6,8 +6,8 @@ include ../Makefile.inc
- # basic flags setting
- #
- CFLAGS += -I$(multipathdir)
--LDFLAGS += -lpthread -ldevmapper -lreadline -lncurses -ldl \
-- -lmultipath -L$(multipathdir)
-+LIBS = -lpthread -ldevmapper -lreadline -lncurses -ldl \
-+ -L$(multipathdir) -lmultipath
-
- #
- # debuging stuff
-@@ -28,21 +28,20 @@ OBJS = main.o pidfile.o uxlsnr.o uxclnt.
- all : $(EXEC)
-
- $(EXEC): $(OBJS)
-- $(CC) $(CFLAGS) $(LDFLAGS) -o $(EXEC) $(OBJS)
-- $(GZIP) $(EXEC).8 > $(EXEC).8.gz
-+ $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $(EXEC)
-
- install:
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(bindir)
- $(INSTALL_PROGRAM) -m 755 $(EXEC) $(DESTDIR)$(bindir)
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(rcdir)
- $(INSTALL_PROGRAM) -d $(DESTDIR)$(mandir)
-- $(INSTALL_PROGRAM) -m 644 $(EXEC).8.gz $(DESTDIR)$(mandir)
-+ $(INSTALL_PROGRAM) -m 644 $(EXEC).8 $(DESTDIR)$(mandir)
-
- uninstall:
- rm -f $(DESTDIR)$(bindir)/$(EXEC)
- rm -f $(DESTDIR)$(rcdir)/$(EXEC)
-- rm -f $(DESTDIR)$(mandir)/$(EXEC).8.gz
-+ rm -f $(DESTDIR)$(mandir)/$(EXEC).8
-
- clean:
-- rm -f core *.o $(EXEC) *.gz
-+ rm -f core *.o $(EXEC)
-
diff --git a/community/libmediainfo/gcc-4.7.patch b/community/libmediainfo/gcc-4.7.patch
deleted file mode 100644
index 5bdfc53e3..000000000
--- a/community/libmediainfo/gcc-4.7.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-diff -aur MediaInfoLib/Source/MediaInfo/Reader/Reader_libcurl.cpp MediaInfoLib.patched/Source/MediaInfo/Reader/Reader_libcurl.cpp
---- MediaInfoLib/Source/MediaInfo/Reader/Reader_libcurl.cpp 2012-04-08 20:25:35.000000000 +0200
-+++ MediaInfoLib.patched/Source/MediaInfo/Reader/Reader_libcurl.cpp 2012-04-13 05:14:46.924995168 +0200
-@@ -249,15 +249,15 @@
- #else
- libcurl_Module=dlopen(MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!libcurl_Module)
-- libcurl_Module=dlopen("./"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ libcurl_Module=dlopen("./" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!libcurl_Module)
-- libcurl_Module=dlopen("/usr/local/lib/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ libcurl_Module=dlopen("/usr/local/lib/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!libcurl_Module)
-- libcurl_Module=dlopen("/usr/local/lib64/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ libcurl_Module=dlopen("/usr/local/lib64/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!libcurl_Module)
-- libcurl_Module=dlopen("/usr/lib/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ libcurl_Module=dlopen("/usr/lib/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!libcurl_Module)
-- libcurl_Module=dlopen("/usr/lib64/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ libcurl_Module=dlopen("/usr/lib64/" MEDIAINFODLL_NAME, RTLD_LAZY);
- #endif
- if (!libcurl_Module)
- {
-diff -aur MediaInfoLib/Source/MediaInfoDLL/MediaInfoDLL.h MediaInfoLib.patched/Source/MediaInfoDLL/MediaInfoDLL.h
---- MediaInfoLib/Source/MediaInfoDLL/MediaInfoDLL.h 2012-04-08 12:08:50.000000000 +0200
-+++ MediaInfoLib.patched/Source/MediaInfoDLL/MediaInfoDLL.h 2012-04-13 05:14:05.481020899 +0200
-@@ -248,24 +248,24 @@
-
- #ifdef MEDIAINFO_GLIBC
- #define MEDIAINFO_ASSIGN(_Name,_Name2) \
-- if (!g_module_symbol (MediaInfo_Module, "MediaInfo"MEDIAINFO_Ansi"_"_Name2, (gpointer*)&MediaInfo_##_Name)) \
-+ if (!g_module_symbol (MediaInfo_Module, "MediaInfo" MEDIAINFO_Ansi "_" _Name2, (gpointer*)&MediaInfo_##_Name)) \
- Errors++;
- #define MEDIAINFOLIST_ASSIGN(_Name,_Name2) \
-- if (!g_module_symbol (MediaInfo_Module, "MediaInfoList"MEDIAINFO_Ansi"_"_Name2, (gpointer*)&MediaInfoList_##_Name)) \
-+ if (!g_module_symbol (MediaInfo_Module, "MediaInfoList" MEDIAINFO_Ansi "_" _Name2, (gpointer*)&MediaInfoList_##_Name)) \
- Errors++;
- #elif defined (_WIN32) || defined (WIN32)
- #define MEDIAINFO_ASSIGN(_Name,_Name2) \
-- MediaInfo_##_Name=(MEDIAINFO_##_Name)GetProcAddress(MediaInfo_Module, "MediaInfo"MEDIAINFO_Ansi"_"_Name2); \
-+ MediaInfo_##_Name=(MEDIAINFO_##_Name)GetProcAddress(MediaInfo_Module, "MediaInfo" MEDIAINFO_Ansi "_" _Name2); \
- if (MediaInfo_##_Name==NULL) Errors++;
- #define MEDIAINFOLIST_ASSIGN(_Name,_Name2) \
-- MediaInfoList_##_Name=(MEDIAINFOLIST_##_Name)GetProcAddress(MediaInfo_Module, "MediaInfoList"MEDIAINFO_Ansi"_"_Name2); \
-+ MediaInfoList_##_Name=(MEDIAINFOLIST_##_Name)GetProcAddress(MediaInfo_Module, "MediaInfoList" MEDIAINFO_Ansi "_" _Name2); \
- if (MediaInfoList_##_Name==NULL) Errors++;
- #else
- #define MEDIAINFO_ASSIGN(_Name,_Name2) \
-- MediaInfo_##_Name=(MEDIAINFO_##_Name)dlsym(MediaInfo_Module, "MediaInfo"MEDIAINFO_Ansi"_"_Name2); \
-+ MediaInfo_##_Name=(MEDIAINFO_##_Name)dlsym(MediaInfo_Module, "MediaInfo" MEDIAINFO_Ansi "_" _Name2); \
- if (MediaInfo_##_Name==NULL) Errors++;
- #define MEDIAINFOLIST_ASSIGN(_Name,_Name2) \
-- MediaInfoList_##_Name=(MEDIAINFOLIST_##_Name)dlsym(MediaInfo_Module, "MediaInfoList"MEDIAINFO_Ansi"_"_Name2); \
-+ MediaInfoList_##_Name=(MEDIAINFOLIST_##_Name)dlsym(MediaInfo_Module, "MediaInfoList" MEDIAINFO_Ansi "_" _Name2); \
- if (MediaInfoList_##_Name==NULL) Errors++;
- #endif
-
-@@ -317,15 +317,15 @@
- #else
- MediaInfo_Module=dlopen(MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!MediaInfo_Module)
-- MediaInfo_Module=dlopen("./"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ MediaInfo_Module=dlopen("./" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!MediaInfo_Module)
-- MediaInfo_Module=dlopen("/usr/local/lib/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ MediaInfo_Module=dlopen("/usr/local/lib/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!MediaInfo_Module)
-- MediaInfo_Module=dlopen("/usr/local/lib64/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ MediaInfo_Module=dlopen("/usr/local/lib64/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!MediaInfo_Module)
-- MediaInfo_Module=dlopen("/usr/lib/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ MediaInfo_Module=dlopen("/usr/lib/" MEDIAINFODLL_NAME, RTLD_LAZY);
- if (!MediaInfo_Module)
-- MediaInfo_Module=dlopen("/usr/lib64/"MEDIAINFODLL_NAME, RTLD_LAZY);
-+ MediaInfo_Module=dlopen("/usr/lib64/" MEDIAINFODLL_NAME, RTLD_LAZY);
- #endif
- if (!MediaInfo_Module)
- return (size_t)-1;
diff --git a/extra/cups-filters/PKGBUILD b/extra/cups-filters/PKGBUILD
deleted file mode 100644
index b702d997e..000000000
--- a/extra/cups-filters/PKGBUILD
+++ /dev/null
@@ -1,33 +0,0 @@
-# $Id: PKGBUILD 160054 2012-05-28 15:36:43Z andyrtr $
-# Maintainer: Andreas Radke <andyrtr@archlinux.org>
-
-pkgname=cups-filters
-pkgver=1.0.18
-pkgrel=2
-pkgdesc="OpenPrinting CUPS Filters"
-arch=('i686' 'x86_64')
-url="http://www.linuxfoundation.org/collaborate/workgroups/openprinting"
-license=('GPL')
-depends=('lcms2' 'poppler')
-makedepends=('ghostscript')
-optdepends=('ghostscript: for non-PostScript printers to print with CUPS to convert PostScript to raster images'
- 'foomatic-db: drivers use Ghostscript to convert PostScript to a printable form directly'
- 'foomatic-db-engine: drivers use Ghostscript to convert PostScript to a printable form directly'
- 'foomatic-db-nonfree: drivers use Ghostscript to convert PostScript to a printable form directly')
-backup=(etc/fonts/conf.d/99pdftoopvp.conf)
-source=(http://www.openprinting.org/download/cups-filters/$pkgname-$pkgver.tar.gz)
-md5sums=(63972b426b7224915cdbb42b2a937374'')
-
-build() {
- cd "$srcdir/$pkgname-$pkgver"
- ./configure --prefix=/usr --sysconfdir=/etc
- make
-}
-
-package() {
- cd "$srcdir/$pkgname-$pkgver"
- #make DESTDIR="$pkgdir/" install
- make install BUILDROOT="$pkgdir/"
- # drop static lib
- rm -f ${pkgdir}/usr/lib/*.a
-}
diff --git a/kernels/linux-libre-aufs_friendly/CVE-2012-0056.patch b/kernels/linux-libre-aufs_friendly/CVE-2012-0056.patch
deleted file mode 100644
index 6a83fef1c..000000000
--- a/kernels/linux-libre-aufs_friendly/CVE-2012-0056.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-From e268337dfe26dfc7efd422a804dbb27977a3cccc Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Tue, 17 Jan 2012 15:21:19 -0800
-Subject: [PATCH] proc: clean up and fix /proc/<pid>/mem handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf8
-Content-Transfer-Encoding: 8bit
-
-Jüri Aedla reported that the /proc/<pid>/mem handling really isn't very
-robust, and it also doesn't match the permission checking of any of the
-other related files.
-
-This changes it to do the permission checks at open time, and instead of
-tracking the process, it tracks the VM at the time of the open. That
-simplifies the code a lot, but does mean that if you hold the file
-descriptor open over an execve(), you'll continue to read from the _old_
-VM.
-
-That is different from our previous behavior, but much simpler. If
-somebody actually finds a load where this matters, we'll need to revert
-this commit.
-
-I suspect that nobody will ever notice - because the process mapping
-addresses will also have changed as part of the execve. So you cannot
-actually usefully access the fd across a VM change simply because all
-the offsets for IO would have changed too.
-
-Reported-by: Jüri Aedla <asd@ut.ee>
-Cc: Al Viro <viro@zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
- fs/proc/base.c | 145 +++++++++++++++-----------------------------------------
- 1 files changed, 39 insertions(+), 106 deletions(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 5485a53..662ddf2 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -198,65 +198,7 @@ static int proc_root_link(struct dentry *dentry, struct path *path)
- return result;
- }
-
--static struct mm_struct *__check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
--
-- mm = get_task_mm(task);
-- if (!mm)
-- return ERR_PTR(-EINVAL);
--
-- /*
-- * A task can always look at itself, in case it chooses
-- * to use system calls instead of load instructions.
-- */
-- if (task == current)
-- return mm;
--
-- /*
-- * If current is actively ptrace'ing, and would also be
-- * permitted to freshly attach with ptrace now, permit it.
-- */
-- if (task_is_stopped_or_traced(task)) {
-- int match;
-- rcu_read_lock();
-- match = (ptrace_parent(task) == current);
-- rcu_read_unlock();
-- if (match && ptrace_may_access(task, PTRACE_MODE_ATTACH))
-- return mm;
-- }
--
-- /*
-- * No one else is allowed.
-- */
-- mmput(mm);
-- return ERR_PTR(-EPERM);
--}
--
--/*
-- * If current may access user memory in @task return a reference to the
-- * corresponding mm, otherwise ERR_PTR.
-- */
--static struct mm_struct *check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
-- int err;
--
-- /*
-- * Avoid racing if task exec's as we might get a new mm but validate
-- * against old credentials.
-- */
-- err = mutex_lock_killable(&task->signal->cred_guard_mutex);
-- if (err)
-- return ERR_PTR(err);
--
-- mm = __check_mem_permission(task);
-- mutex_unlock(&task->signal->cred_guard_mutex);
--
-- return mm;
--}
--
--struct mm_struct *mm_for_maps(struct task_struct *task)
-+static struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
- {
- struct mm_struct *mm;
- int err;
-@@ -267,7 +209,7 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
-
- mm = get_task_mm(task);
- if (mm && mm != current->mm &&
-- !ptrace_may_access(task, PTRACE_MODE_READ)) {
-+ !ptrace_may_access(task, mode)) {
- mmput(mm);
- mm = ERR_PTR(-EACCES);
- }
-@@ -276,6 +218,11 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
- return mm;
- }
-
-+struct mm_struct *mm_for_maps(struct task_struct *task)
-+{
-+ return mm_access(task, PTRACE_MODE_READ);
-+}
-+
- static int proc_pid_cmdline(struct task_struct *task, char * buffer)
- {
- int res = 0;
-@@ -752,38 +699,39 @@ static const struct file_operations proc_single_file_operations = {
-
- static int mem_open(struct inode* inode, struct file* file)
- {
-- file->private_data = (void*)((long)current->self_exec_id);
-+ struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ struct mm_struct *mm;
-+
-+ if (!task)
-+ return -ESRCH;
-+
-+ mm = mm_access(task, PTRACE_MODE_ATTACH);
-+ put_task_struct(task);
-+
-+ if (IS_ERR(mm))
-+ return PTR_ERR(mm);
-+
- /* OK to pass negative loff_t, we can catch out-of-range */
- file->f_mode |= FMODE_UNSIGNED_OFFSET;
-+ file->private_data = mm;
-+
- return 0;
- }
-
- static ssize_t mem_read(struct file * file, char __user * buf,
- size_t count, loff_t *ppos)
- {
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ int ret;
- char *page;
- unsigned long src = *ppos;
-- int ret = -ESRCH;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- ret = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out;
--
-- mm = check_mem_permission(task);
-- ret = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- ret = -EIO;
--
-- if (file->private_data != (void*)((long)current->self_exec_id))
-- goto out_put;
-+ return -ENOMEM;
-
- ret = 0;
-
-@@ -810,13 +758,7 @@ static ssize_t mem_read(struct file * file, char __user * buf,
- }
- *ppos = src;
-
--out_put:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out:
-- put_task_struct(task);
--out_no_task:
- return ret;
- }
-
-@@ -825,27 +767,15 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- {
- int copied;
- char *page;
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
- unsigned long dst = *ppos;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- copied = -ESRCH;
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- copied = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out_task;
--
-- mm = check_mem_permission(task);
-- copied = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- copied = -EIO;
-- if (file->private_data != (void *)((long)current->self_exec_id))
-- goto out_mm;
-+ return -ENOMEM;
-
- copied = 0;
- while (count > 0) {
-@@ -869,13 +799,7 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- }
- *ppos = dst;
-
--out_mm:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out_task:
-- put_task_struct(task);
--out_no_task:
- return copied;
- }
-
-@@ -895,11 +819,20 @@ loff_t mem_lseek(struct file *file, loff_t offset, int orig)
- return file->f_pos;
- }
-
-+static int mem_release(struct inode *inode, struct file *file)
-+{
-+ struct mm_struct *mm = file->private_data;
-+
-+ mmput(mm);
-+ return 0;
-+}
-+
- static const struct file_operations proc_mem_operations = {
- .llseek = mem_lseek,
- .read = mem_read,
- .write = mem_write,
- .open = mem_open,
-+ .release = mem_release,
- };
-
- static ssize_t environ_read(struct file *file, char __user *buf,
---
-1.7.6.5
-
diff --git a/kernels/linux-libre-aufs_friendly/dib0700-fix.patch b/kernels/linux-libre-aufs_friendly/dib0700-fix.patch
deleted file mode 100644
index 48f07e6fd..000000000
--- a/kernels/linux-libre-aufs_friendly/dib0700-fix.patch
+++ /dev/null
@@ -1,1487 +0,0 @@
-commit 198c545cd7306dc90aaae1d61e64175e70a70dc8
-Author: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
-Date: Wed Aug 3 17:08:21 2011 +0200
-
- [media] DiBcom: protect the I2C bufer access
-
- This patch protect the I2C buffer access in order to manage concurrent
- access. This protection is done using mutex.
- Furthermore, for the dib9000, if a pid filtering command is
- received during the tuning, this pid filtering command is delayed to
- avoid any concurrent access issue.
-
- Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
- Cc: Florian Mickler <florian@mickler.org>
- Cc: stable@kernel.org
-
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
- Signed-off-by: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
-
-diff --git a/drivers/media/dvb/frontends/dib0070.c b/drivers/media/dvb/frontends/dib0070.c
-index 1d47d4d..dc1cb17 100644
---- a/drivers/media/dvb/frontends/dib0070.c
-+++ b/drivers/media/dvb/frontends/dib0070.c
-@@ -27,6 +27,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -78,10 +79,18 @@ struct dib0070_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[3];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
--static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
-+static u16 dib0070_read_reg(struct dib0070_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
-@@ -96,13 +105,23 @@ static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
-
- if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
- printk(KERN_WARNING "DiB0070 I2C read failed\n");
-- return 0;
-- }
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
- state->i2c_write_buffer[0] = reg;
- state->i2c_write_buffer[1] = val >> 8;
- state->i2c_write_buffer[2] = val & 0xff;
-@@ -115,9 +134,12 @@ static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
-
- if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0070 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- #define HARD_RESET(state) do { \
-@@ -734,6 +756,7 @@ struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter
- state->cfg = cfg;
- state->i2c = i2c;
- state->fe = fe;
-+ mutex_init(&state->i2c_buffer_lock);
- fe->tuner_priv = state;
-
- if (dib0070_reset(fe) != 0)
-diff --git a/drivers/media/dvb/frontends/dib0090.c b/drivers/media/dvb/frontends/dib0090.c
-index c9c935a..b174d1c 100644
---- a/drivers/media/dvb/frontends/dib0090.c
-+++ b/drivers/media/dvb/frontends/dib0090.c
-@@ -27,6 +27,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -196,6 +197,7 @@ struct dib0090_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[3];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- struct dib0090_fw_state {
-@@ -208,10 +210,18 @@ struct dib0090_fw_state {
- struct i2c_msg msg;
- u8 i2c_write_buffer[2];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
-@@ -226,14 +236,24 @@ static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
-
- if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
- printk(KERN_WARNING "DiB0090 I2C read failed\n");
-- return 0;
-- }
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = reg & 0xff;
- state->i2c_write_buffer[1] = val >> 8;
- state->i2c_write_buffer[2] = val & 0xff;
-@@ -246,13 +266,23 @@ static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
-
- if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(&state->msg, 0, sizeof(struct i2c_msg));
-@@ -262,13 +292,24 @@ static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
- state->msg.len = 2;
- if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C read failed\n");
-- return 0;
-- }
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = val >> 8;
- state->i2c_write_buffer[1] = val & 0xff;
-
-@@ -279,9 +320,12 @@ static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
- state->msg.len = 2;
- if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- #define HARD_RESET(state) do { if (cfg->reset) { if (cfg->sleep) cfg->sleep(fe, 0); msleep(10); cfg->reset(fe, 1); msleep(10); cfg->reset(fe, 0); msleep(10); } } while (0)
-@@ -2440,6 +2484,7 @@ struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapte
- st->config = config;
- st->i2c = i2c;
- st->fe = fe;
-+ mutex_init(&st->i2c_buffer_lock);
- fe->tuner_priv = st;
-
- if (config->wbd == NULL)
-@@ -2471,6 +2516,7 @@ struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_ada
- st->config = config;
- st->i2c = i2c;
- st->fe = fe;
-+ mutex_init(&st->i2c_buffer_lock);
- fe->tuner_priv = st;
-
- if (dib0090_fw_reset_digital(fe, st->config) != 0)
-diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
-index 79cb1c2..dbb76d7 100644
---- a/drivers/media/dvb/frontends/dib7000m.c
-+++ b/drivers/media/dvb/frontends/dib7000m.c
-@@ -11,6 +11,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -55,6 +56,7 @@ struct dib7000m_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib7000m_power_mode {
-@@ -69,6 +71,13 @@ enum dib7000m_power_mode {
-
- static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) | 0x80;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -85,11 +94,21 @@ static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
- if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d",reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -101,7 +120,10 @@ static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
- static void dib7000m_write_tab(struct dib7000m_state *state, u16 *buf)
- {
-@@ -1385,6 +1407,7 @@ struct dvb_frontend * dib7000m_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- demod = &st->demod;
- demod->demodulator_priv = st;
- memcpy(&st->demod.ops, &dib7000m_ops, sizeof(struct dvb_frontend_ops));
-+ mutex_init(&st->i2c_buffer_lock);
-
- st->timf_default = cfg->bw->timf;
-
-diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
-index 0c9f40c..292bc19 100644
---- a/drivers/media/dvb/frontends/dib7000p.c
-+++ b/drivers/media/dvb/frontends/dib7000p.c
-@@ -10,6 +10,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_math.h"
- #include "dvb_frontend.h"
-@@ -68,6 +69,7 @@ struct dib7000p_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib7000p_power_mode {
-@@ -81,6 +83,13 @@ static int dib7090_set_diversity_in(struct dvb_frontend *fe, int onoff);
-
- static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg >> 8;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -97,11 +106,20 @@ static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
- if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -113,7 +131,10 @@ static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static void dib7000p_write_tab(struct dib7000p_state *state, u16 * buf)
-@@ -1646,6 +1667,7 @@ int dib7000p_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 defau
- return -ENOMEM;
-
- dpst->i2c_adap = i2c;
-+ mutex_init(&dpst->i2c_buffer_lock);
-
- for (k = no_of_demods - 1; k >= 0; k--) {
- dpst->cfg = cfg[k];
-@@ -2324,6 +2346,7 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- demod = &st->demod;
- demod->demodulator_priv = st;
- memcpy(&st->demod.ops, &dib7000p_ops, sizeof(struct dvb_frontend_ops));
-+ mutex_init(&st->i2c_buffer_lock);
-
- dib7000p_write_word(st, 1287, 0x0003); /* sram lead in, rdy */
-
-@@ -2333,8 +2356,9 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- st->version = dib7000p_read_word(st, 897);
-
- /* FIXME: make sure the dev.parent field is initialized, or else
-- request_firmware() will hit an OOPS (this should be moved somewhere
-- more common) */
-+ request_firmware() will hit an OOPS (this should be moved somewhere
-+ more common) */
-+ st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
-
- dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
-
-diff --git a/drivers/media/dvb/frontends/dib8000.c b/drivers/media/dvb/frontends/dib8000.c
-index 7d2ea11..fe284d5 100644
---- a/drivers/media/dvb/frontends/dib8000.c
-+++ b/drivers/media/dvb/frontends/dib8000.c
-@@ -10,6 +10,8 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-+
- #include "dvb_math.h"
-
- #include "dvb_frontend.h"
-@@ -37,6 +39,7 @@ struct i2c_device {
- u8 addr;
- u8 *i2c_write_buffer;
- u8 *i2c_read_buffer;
-+ struct mutex *i2c_buffer_lock;
- };
-
- struct dib8000_state {
-@@ -77,6 +80,7 @@ struct dib8000_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib8000_power_mode {
-@@ -86,24 +90,39 @@ enum dib8000_power_mode {
-
- static u16 dib8000_i2c_read16(struct i2c_device *i2c, u16 reg)
- {
-+ u16 ret;
- struct i2c_msg msg[2] = {
-- {.addr = i2c->addr >> 1, .flags = 0,
-- .buf = i2c->i2c_write_buffer, .len = 2},
-- {.addr = i2c->addr >> 1, .flags = I2C_M_RD,
-- .buf = i2c->i2c_read_buffer, .len = 2},
-+ {.addr = i2c->addr >> 1, .flags = 0, .len = 2},
-+ {.addr = i2c->addr >> 1, .flags = I2C_M_RD, .len = 2},
- };
-
-+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
-+ msg[0].buf = i2c->i2c_write_buffer;
- msg[0].buf[0] = reg >> 8;
- msg[0].buf[1] = reg & 0xff;
-+ msg[1].buf = i2c->i2c_read_buffer;
-
- if (i2c_transfer(i2c->adap, msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (msg[1].buf[0] << 8) | msg[1].buf[1];
-+ ret = (msg[1].buf[0] << 8) | msg[1].buf[1];
-+ mutex_unlock(i2c->i2c_buffer_lock);
-+ return ret;
- }
-
- static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg >> 8;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -120,7 +139,10 @@ static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
- if (i2c_transfer(state->i2c.adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
-@@ -135,22 +157,35 @@ static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
-
- static int dib8000_i2c_write16(struct i2c_device *i2c, u16 reg, u16 val)
- {
-- struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0,
-- .buf = i2c->i2c_write_buffer, .len = 4};
-+ struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0, .len = 4};
- int ret = 0;
-
-+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
-+ msg.buf = i2c->i2c_write_buffer;
- msg.buf[0] = (reg >> 8) & 0xff;
- msg.buf[1] = reg & 0xff;
- msg.buf[2] = (val >> 8) & 0xff;
- msg.buf[3] = val & 0xff;
-
- ret = i2c_transfer(i2c->adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
-+ mutex_unlock(i2c->i2c_buffer_lock);
-
- return ret;
- }
-
- static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -162,7 +197,11 @@ static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static const s16 coeff_2k_sb_1seg_dqpsk[8] = {
-@@ -2434,8 +2473,15 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
- if (!client.i2c_read_buffer) {
- dprintk("%s: not enough memory", __func__);
- ret = -ENOMEM;
-- goto error_memory;
-+ goto error_memory_read;
-+ }
-+ client.i2c_buffer_lock = kzalloc(sizeof(struct mutex), GFP_KERNEL);
-+ if (!client.i2c_buffer_lock) {
-+ dprintk("%s: not enough memory", __func__);
-+ ret = -ENOMEM;
-+ goto error_memory_lock;
- }
-+ mutex_init(client.i2c_buffer_lock);
-
- for (k = no_of_demods - 1; k >= 0; k--) {
- /* designated i2c address */
-@@ -2476,8 +2522,10 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
- }
-
- error:
-+ kfree(client.i2c_buffer_lock);
-+error_memory_lock:
- kfree(client.i2c_read_buffer);
--error_memory:
-+error_memory_read:
- kfree(client.i2c_write_buffer);
-
- return ret;
-@@ -2581,6 +2629,8 @@ struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, s
- state->i2c.addr = i2c_addr;
- state->i2c.i2c_write_buffer = state->i2c_write_buffer;
- state->i2c.i2c_read_buffer = state->i2c_read_buffer;
-+ mutex_init(&state->i2c_buffer_lock);
-+ state->i2c.i2c_buffer_lock = &state->i2c_buffer_lock;
- state->gpio_val = cfg->gpio_val;
- state->gpio_dir = cfg->gpio_dir;
-
-diff --git a/drivers/media/dvb/frontends/dib9000.c b/drivers/media/dvb/frontends/dib9000.c
-index a085588..b931074 100644
---- a/drivers/media/dvb/frontends/dib9000.c
-+++ b/drivers/media/dvb/frontends/dib9000.c
-@@ -38,6 +38,15 @@ struct i2c_device {
- #define DibInitLock(lock) mutex_init(lock)
- #define DibFreeLock(lock)
-
-+struct dib9000_pid_ctrl {
-+#define DIB9000_PID_FILTER_CTRL 0
-+#define DIB9000_PID_FILTER 1
-+ u8 cmd;
-+ u8 id;
-+ u16 pid;
-+ u8 onoff;
-+};
-+
- struct dib9000_state {
- struct i2c_device i2c;
-
-@@ -99,6 +108,10 @@ struct dib9000_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[255];
- u8 i2c_read_buffer[255];
-+ DIB_LOCK demod_lock;
-+ u8 get_frontend_internal;
-+ struct dib9000_pid_ctrl pid_ctrl[10];
-+ s8 pid_ctrl_index; /* -1: empty list; -2: do not use the list */
- };
-
- static const u32 fe_info[44] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-@@ -1743,19 +1756,56 @@ EXPORT_SYMBOL(dib9000_set_gpio);
- int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
- {
- struct dib9000_state *state = fe->demodulator_priv;
-- u16 val = dib9000_read_word(state, 294 + 1) & 0xffef;
-+ u16 val;
-+ int ret;
-+
-+ if ((state->pid_ctrl_index != -2) && (state->pid_ctrl_index < 9)) {
-+ /* postpone the pid filtering cmd */
-+ dprintk("pid filter cmd postpone");
-+ state->pid_ctrl_index++;
-+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER_CTRL;
-+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
-+ return 0;
-+ }
-+
-+ DibAcquireLock(&state->demod_lock);
-+
-+ val = dib9000_read_word(state, 294 + 1) & 0xffef;
- val |= (onoff & 0x1) << 4;
-
- dprintk("PID filter enabled %d", onoff);
-- return dib9000_write_word(state, 294 + 1, val);
-+ ret = dib9000_write_word(state, 294 + 1, val);
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
-+
- }
- EXPORT_SYMBOL(dib9000_fw_pid_filter_ctrl);
-
- int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
- {
- struct dib9000_state *state = fe->demodulator_priv;
-+ int ret;
-+
-+ if (state->pid_ctrl_index != -2) {
-+ /* postpone the pid filtering cmd */
-+ dprintk("pid filter postpone");
-+ if (state->pid_ctrl_index < 9) {
-+ state->pid_ctrl_index++;
-+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER;
-+ state->pid_ctrl[state->pid_ctrl_index].id = id;
-+ state->pid_ctrl[state->pid_ctrl_index].pid = pid;
-+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
-+ } else
-+ dprintk("can not add any more pid ctrl cmd");
-+ return 0;
-+ }
-+
-+ DibAcquireLock(&state->demod_lock);
- dprintk("Index %x, PID %d, OnOff %d", id, pid, onoff);
-- return dib9000_write_word(state, 300 + 1 + id, onoff ? (1 << 13) | pid : 0);
-+ ret = dib9000_write_word(state, 300 + 1 + id,
-+ onoff ? (1 << 13) | pid : 0);
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
- EXPORT_SYMBOL(dib9000_fw_pid_filter);
-
-@@ -1778,6 +1828,7 @@ static void dib9000_release(struct dvb_frontend *demod)
- DibFreeLock(&state->platform.risc.mbx_lock);
- DibFreeLock(&state->platform.risc.mem_lock);
- DibFreeLock(&state->platform.risc.mem_mbx_lock);
-+ DibFreeLock(&state->demod_lock);
- dibx000_exit_i2c_master(&st->i2c_master);
-
- i2c_del_adapter(&st->tuner_adap);
-@@ -1795,14 +1846,19 @@ static int dib9000_sleep(struct dvb_frontend *fe)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u8 index_frontend;
-- int ret;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- ret = state->fe[index_frontend]->ops.sleep(state->fe[index_frontend]);
- if (ret < 0)
-- return ret;
-+ goto error;
- }
-- return dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
-+ ret = dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings *tune)
-@@ -1816,7 +1872,10 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- struct dib9000_state *state = fe->demodulator_priv;
- u8 index_frontend, sub_index_frontend;
- fe_status_t stat;
-- int ret;
-+ int ret = 0;
-+
-+ if (state->get_frontend_internal == 0)
-+ DibAcquireLock(&state->demod_lock);
-
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- state->fe[index_frontend]->ops.read_status(state->fe[index_frontend], &stat);
-@@ -1846,14 +1905,15 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- state->fe[index_frontend]->dtv_property_cache.rolloff;
- }
- }
-- return 0;
-+ ret = 0;
-+ goto return_value;
- }
- }
-
- /* get the channel from master chip */
- ret = dib9000_fw_get_channel(fe, fep);
- if (ret != 0)
-- return ret;
-+ goto return_value;
-
- /* synchronize the cache with the other frontends */
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
-@@ -1866,8 +1926,12 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- state->fe[index_frontend]->dtv_property_cache.code_rate_LP = fe->dtv_property_cache.code_rate_LP;
- state->fe[index_frontend]->dtv_property_cache.rolloff = fe->dtv_property_cache.rolloff;
- }
-+ ret = 0;
-
-- return 0;
-+return_value:
-+ if (state->get_frontend_internal == 0)
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)
-@@ -1912,6 +1976,10 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- dprintk("dib9000: must specify bandwidth ");
- return 0;
- }
-+
-+ state->pid_ctrl_index = -1; /* postpone the pid filtering cmd */
-+ DibAcquireLock(&state->demod_lock);
-+
- fe->dtv_property_cache.delivery_system = SYS_DVBT;
-
- /* set the master status */
-@@ -1974,13 +2042,18 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- /* check the tune result */
- if (exit_condition == 1) { /* tune failed */
- dprintk("tune failed");
-+ DibReleaseLock(&state->demod_lock);
-+ /* tune failed; put all the pid filtering cmd to junk */
-+ state->pid_ctrl_index = -1;
- return 0;
- }
-
- dprintk("tune success on frontend%i", index_frontend_success);
-
- /* synchronize all the channel cache */
-+ state->get_frontend_internal = 1;
- dib9000_get_frontend(state->fe[0], fep);
-+ state->get_frontend_internal = 0;
-
- /* retune the other frontends with the found channel */
- channel_status.status = CHANNEL_STATUS_PARAMETERS_SET;
-@@ -2025,6 +2098,28 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- /* turn off the diversity for the last frontend */
- dib9000_fw_set_diversity_in(state->fe[index_frontend - 1], 0);
-
-+ DibReleaseLock(&state->demod_lock);
-+ if (state->pid_ctrl_index >= 0) {
-+ u8 index_pid_filter_cmd;
-+ u8 pid_ctrl_index = state->pid_ctrl_index;
-+
-+ state->pid_ctrl_index = -2;
-+ for (index_pid_filter_cmd = 0;
-+ index_pid_filter_cmd <= pid_ctrl_index;
-+ index_pid_filter_cmd++) {
-+ if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER_CTRL)
-+ dib9000_fw_pid_filter_ctrl(state->fe[0],
-+ state->pid_ctrl[index_pid_filter_cmd].onoff);
-+ else if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER)
-+ dib9000_fw_pid_filter(state->fe[0],
-+ state->pid_ctrl[index_pid_filter_cmd].id,
-+ state->pid_ctrl[index_pid_filter_cmd].pid,
-+ state->pid_ctrl[index_pid_filter_cmd].onoff);
-+ }
-+ }
-+ /* do not postpone any more the pid filtering */
-+ state->pid_ctrl_index = -2;
-+
- return 0;
- }
-
-@@ -2041,6 +2136,7 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
- u8 index_frontend;
- u16 lock = 0, lock_slave = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
- lock_slave |= dib9000_read_lock(state->fe[index_frontend]);
-
-@@ -2059,6 +2155,8 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
- if ((lock & 0x0008) || (lock_slave & 0x0008))
- *stat |= FE_HAS_LOCK;
-
-+ DibReleaseLock(&state->demod_lock);
-+
- return 0;
- }
-
-@@ -2066,10 +2164,14 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u16 *c;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR,
- state->i2c_read_buffer, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-@@ -2077,7 +2179,10 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
- c = (u16 *)state->i2c_read_buffer;
-
- *ber = c[10] << 16 | c[11];
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
-@@ -2086,7 +2191,9 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- u8 index_frontend;
- u16 *c = (u16 *)state->i2c_read_buffer;
- u16 val;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- *strength = 0;
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- state->fe[index_frontend]->ops.read_signal_strength(state->fe[index_frontend], &val);
-@@ -2097,8 +2204,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- }
-
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-
-@@ -2107,7 +2216,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- *strength = 65535;
- else
- *strength += val;
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static u32 dib9000_get_snr(struct dvb_frontend *fe)
-@@ -2151,6 +2263,7 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
- u8 index_frontend;
- u32 snr_master;
-
-+ DibAcquireLock(&state->demod_lock);
- snr_master = dib9000_get_snr(fe);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
- snr_master += dib9000_get_snr(state->fe[index_frontend]);
-@@ -2161,6 +2274,8 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
- } else
- *snr = 0;
-
-+ DibReleaseLock(&state->demod_lock);
-+
- return 0;
- }
-
-@@ -2168,15 +2283,22 @@ static int dib9000_read_unc_blocks(struct dvb_frontend *fe, u32 * unc)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u16 *c = (u16 *)state->i2c_read_buffer;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-
- *unc = c[12];
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- int dib9000_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, u8 first_addr)
-@@ -2322,6 +2444,10 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
- DibInitLock(&st->platform.risc.mbx_lock);
- DibInitLock(&st->platform.risc.mem_lock);
- DibInitLock(&st->platform.risc.mem_mbx_lock);
-+ DibInitLock(&st->demod_lock);
-+ st->get_frontend_internal = 0;
-+
-+ st->pid_ctrl_index = -2;
-
- st->fe[0] = fe;
- fe->demodulator_priv = st;
-diff --git a/drivers/media/dvb/frontends/dibx000_common.c b/drivers/media/dvb/frontends/dibx000_common.c
-index dc5d17a..774d507 100644
---- a/drivers/media/dvb/frontends/dibx000_common.c
-+++ b/drivers/media/dvb/frontends/dibx000_common.c
-@@ -1,4 +1,5 @@
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dibx000_common.h"
-
-@@ -10,6 +11,13 @@ MODULE_PARM_DESC(debug, "turn on debugging (default: 0)");
-
- static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- mst->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- mst->i2c_write_buffer[1] = reg & 0xff;
- mst->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -21,11 +29,21 @@ static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
- mst->msg[0].buf = mst->i2c_write_buffer;
- mst->msg[0].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- mst->i2c_write_buffer[0] = reg >> 8;
- mst->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -42,7 +60,10 @@ static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
- if (i2c_transfer(mst->i2c_adap, mst->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
-+ ret = (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static int dibx000_is_i2c_done(struct dibx000_i2c_master *mst)
-@@ -257,6 +278,7 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- struct i2c_msg msg[], int num)
- {
- struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
-+ int ret;
-
- if (num > 32) {
- dprintk("%s: too much I2C message to be transmitted (%i).\
-@@ -264,10 +286,15 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- return -ENOMEM;
- }
-
-- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
--
- dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_GPIO_6_7);
-
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
-+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
-+
- /* open the gate */
- dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
- mst->msg[0].addr = mst->i2c_addr;
-@@ -282,7 +309,11 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
- mst->msg[num + 1].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
-+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
-+ num : -EIO);
-+
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+ return ret;
- }
-
- static struct i2c_algorithm dibx000_i2c_gated_gpio67_algo = {
-@@ -294,6 +325,7 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- struct i2c_msg msg[], int num)
- {
- struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
-+ int ret;
-
- if (num > 32) {
- dprintk("%s: too much I2C message to be transmitted (%i).\
-@@ -301,10 +333,14 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- return -ENOMEM;
- }
-
-- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
--
- dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_TUNER);
-
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
-+
- /* open the gate */
- dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
- mst->msg[0].addr = mst->i2c_addr;
-@@ -319,7 +355,10 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
- mst->msg[num + 1].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
-+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
-+ num : -EIO);
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+ return ret;
- }
-
- static struct i2c_algorithm dibx000_i2c_gated_tuner_algo = {
-@@ -390,8 +429,18 @@ static int i2c_adapter_init(struct i2c_adapter *i2c_adap,
- int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
- struct i2c_adapter *i2c_adap, u8 i2c_addr)
- {
-- u8 tx[4];
-- struct i2c_msg m = {.addr = i2c_addr >> 1,.buf = tx,.len = 4 };
-+ int ret;
-+
-+ mutex_init(&mst->i2c_buffer_lock);
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+ memset(mst->msg, 0, sizeof(struct i2c_msg));
-+ mst->msg[0].addr = i2c_addr >> 1;
-+ mst->msg[0].flags = 0;
-+ mst->msg[0].buf = mst->i2c_write_buffer;
-+ mst->msg[0].len = 4;
-
- mst->device_rev = device_rev;
- mst->i2c_adap = i2c_adap;
-@@ -431,9 +480,12 @@ int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
- "DiBX000: could not initialize the master i2c_adapter\n");
-
- /* initialize the i2c-master by closing the gate */
-- dibx000_i2c_gate_ctrl(mst, tx, 0, 0);
-+ dibx000_i2c_gate_ctrl(mst, mst->i2c_write_buffer, 0, 0);
-+
-+ ret = (i2c_transfer(i2c_adap, mst->msg, 1) == 1);
-+ mutex_unlock(&mst->i2c_buffer_lock);
-
-- return i2c_transfer(i2c_adap, &m, 1) == 1;
-+ return ret;
- }
-
- EXPORT_SYMBOL(dibx000_init_i2c_master);
-diff --git a/drivers/media/dvb/frontends/dibx000_common.h b/drivers/media/dvb/frontends/dibx000_common.h
-index f031165..5e01147 100644
---- a/drivers/media/dvb/frontends/dibx000_common.h
-+++ b/drivers/media/dvb/frontends/dibx000_common.h
-@@ -33,6 +33,7 @@ struct dibx000_i2c_master {
- struct i2c_msg msg[34];
- u8 i2c_write_buffer[8];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- extern int dibx000_init_i2c_master(struct dibx000_i2c_master *mst,
-commit 45cbff13693d645fa5dcbba964e802e1746b2e57
-Author: Olivier Grenie <olivier.grenie@dibcom.fr>
-Date: Mon Aug 1 17:45:58 2011 +0200
-
- [media] dib0700: protect the dib0700 buffer access
-
- This patch protects the common buffer access inside the dib0700 in order
- to manage concurrent access. This protection is done using mutex.
-
- Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
- Cc: Florian Mickler <florian@mickler.org>
- Cc: stable@kernel.org
-
- Signed-off-by: Javier Marcet <javier@marcet.info>
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
- Signed-off-by: Patrick Boettcher <patrick.boettcher@dibcom.fr>
-
-diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
-index 5eb91b4..291b645 100644
---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
-@@ -30,6 +30,11 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- struct dib0700_state *st = d->priv;
- int ret;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
- REQUEST_GET_VERSION,
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
-@@ -46,6 +51,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- if (fwtype != NULL)
- *fwtype = (st->buf[12] << 24) | (st->buf[13] << 16) |
- (st->buf[14] << 8) | st->buf[15];
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-@@ -108,7 +114,12 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 txlen, u8 *rx, u8 rxlen
- int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_dir, u8 gpio_val)
- {
- struct dib0700_state *st = d->priv;
-- s16 ret;
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- st->buf[0] = REQUEST_SET_GPIO;
- st->buf[1] = gpio;
-@@ -116,6 +127,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
-
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-@@ -125,6 +137,11 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
- int ret;
-
- if (st->fw_version >= 0x10201) {
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_USB_XFER_LEN;
- st->buf[1] = (nb_ts_packets >> 8) & 0xff;
- st->buf[2] = nb_ts_packets & 0xff;
-@@ -132,6 +149,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
- deb_info("set the USB xfer len to %i Ts packet\n", nb_ts_packets);
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
-+ mutex_unlock(&d->usb_mutex);
- } else {
- deb_info("this firmware does not allow to change the USB xfer len\n");
- ret = -EIO;
-@@ -208,6 +226,10 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
-
- } else {
- /* Write request */
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
- st->buf[0] = REQUEST_NEW_I2C_WRITE;
- st->buf[1] = msg[i].addr << 1;
- st->buf[2] = (en_start << 7) | (en_stop << 6) |
-@@ -227,6 +249,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
- USB_TYPE_VENDOR | USB_DIR_OUT,
- 0, 0, st->buf, msg[i].len + 4,
- USB_CTRL_GET_TIMEOUT);
-+ mutex_unlock(&d->usb_mutex);
- if (result < 0) {
- deb_info("i2c write error (status = %d)\n", result);
- break;
-@@ -249,6 +272,10 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
-
- if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
- return -EAGAIN;
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- for (i = 0; i < num; i++) {
- /* fill in the address */
-@@ -279,6 +306,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
- break;
- }
- }
-+ mutex_unlock(&d->usb_mutex);
- mutex_unlock(&d->i2c_mutex);
-
- return i;
-@@ -337,7 +365,12 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- u16 pll_loopdiv, u16 free_div, u16 dsuScaler)
- {
- struct dib0700_state *st = d->priv;
-- s16 ret;
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- st->buf[0] = REQUEST_SET_CLOCK;
- st->buf[1] = (en_pll << 7) | (pll_src << 6) |
-@@ -352,6 +385,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- st->buf[9] = dsuScaler & 0xff; /* LSB */
-
- ret = dib0700_ctrl_wr(d, st->buf, 10);
-+ mutex_unlock(&d->usb_mutex);
-
- return ret;
- }
-@@ -360,10 +394,16 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- {
- struct dib0700_state *st = d->priv;
- u16 divider;
-+ int ret;
-
- if (scl_kHz == 0)
- return -EINVAL;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_I2C_PARAM;
- divider = (u16) (30000 / scl_kHz);
- st->buf[1] = 0;
-@@ -379,7 +419,11 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- deb_info("setting I2C speed: %04x %04x %04x (%d kHz).",
- (st->buf[2] << 8) | (st->buf[3]), (st->buf[4] << 8) |
- st->buf[5], (st->buf[6] << 8) | st->buf[7], scl_kHz);
-- return dib0700_ctrl_wr(d, st->buf, 8);
-+
-+ ret = dib0700_ctrl_wr(d, st->buf, 8);
-+ mutex_unlock(&d->usb_mutex);
-+
-+ return ret;
- }
-
-
-@@ -515,6 +559,11 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
- }
- }
-
-+ if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_ENABLE_VIDEO;
- /* this bit gives a kind of command,
- * rather than enabling something or not */
-@@ -548,7 +597,10 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
-
- deb_info("data for streaming: %x %x\n", st->buf[1], st->buf[2]);
-
-- return dib0700_ctrl_wr(adap->dev, st->buf, 4);
-+ ret = dib0700_ctrl_wr(adap->dev, st->buf, 4);
-+ mutex_unlock(&adap->dev->usb_mutex);
-+
-+ return ret;
- }
-
- int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
-@@ -557,6 +609,11 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- struct dib0700_state *st = d->priv;
- int new_proto, ret;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_RC;
- st->buf[1] = 0;
- st->buf[2] = 0;
-@@ -567,23 +624,29 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- else if (rc_type == RC_TYPE_NEC)
- new_proto = 0;
- else if (rc_type == RC_TYPE_RC6) {
-- if (st->fw_version < 0x10200)
-- return -EINVAL;
-+ if (st->fw_version < 0x10200) {
-+ ret = -EINVAL;
-+ goto out;
-+ }
-
- new_proto = 2;
-- } else
-- return -EINVAL;
-+ } else {
-+ ret = -EINVAL;
-+ goto out;
-+ }
-
- st->buf[1] = new_proto;
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
- if (ret < 0) {
- err("ir protocol setup failed");
-- return ret;
-+ goto out;
- }
-
- d->props.rc.core.protocol = rc_type;
-
-+out:
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-commit aeb2d456b746164a4bd19e53de0a6678ca63fcad
-Author: Olivier Grenie <olivier.grenie@dibcom.fr>
-Date: Thu Aug 4 18:10:03 2011 +0200
-
- [media] dib0700: correct error message
-
- The goal of this patch is to correct a previous patch. In case of error,
- the err() function should be used instead of dprintk() function.
-
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
-
-diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
-index 291b645..b693ed1 100644
---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
-@@ -31,7 +31,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -117,7 +117,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -138,7 +138,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
-
- if (st->fw_version >= 0x10201) {
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -227,7 +227,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
- } else {
- /* Write request */
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
- st->buf[0] = REQUEST_NEW_I2C_WRITE;
-@@ -273,7 +273,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
- if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
- return -EAGAIN;
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -368,7 +368,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -400,7 +400,7 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- return -EINVAL;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -560,7 +560,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
- }
-
- if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -610,7 +610,7 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- int new_proto, ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
diff --git a/kernels/linux-libre-aufs_friendly/fix-i915.patch b/kernels/linux-libre-aufs_friendly/fix-i915.patch
deleted file mode 100644
index 3b631361a..000000000
--- a/kernels/linux-libre-aufs_friendly/fix-i915.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
-Tested-by: Santi <santi@agolina.net>
----
- drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
-index dc83b7a..c8f67bf 100644
---- a/drivers/gpu/drm/i915/intel_tv.c
-+++ b/drivers/gpu/drm/i915/intel_tv.c
-@@ -1267,6 +1267,15 @@
- DAC_B_0_7_V |
- DAC_C_0_7_V);
-
-+ /*
-+ * The TV sense state should be cleared to zero on cantiga platform. Otherwise
-+ * the TV is misdetected. This is hardware requirement.
-+ */
-+ if (IS_GM45(dev))
-+ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
-+ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
-+
-+
- I915_WRITE(TV_CTL, tv_ctl);
- I915_WRITE(TV_DAC, tv_dac);
- POSTING_READ(TV_DAC);
diff --git a/kernels/linux-libre-aufs_friendly/i915-fix-incorrect-error-message.patch b/kernels/linux-libre-aufs_friendly/i915-fix-incorrect-error-message.patch
deleted file mode 100644
index e1addbb05..000000000
--- a/kernels/linux-libre-aufs_friendly/i915-fix-incorrect-error-message.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 6c76e0b94e484ffbdf38d2fe2769b6ca9aa99de4
-Author: Thomas Bächler <thomas@archlinux.org>
-Date: Mon Oct 31 19:16:18 2011 +0100
-
- Change accidental error message to debug message.
-
- According to https://lkml.org/lkml/2011/9/19/80, this is not supposed
- to be an error message, but a debug message. This worries users.
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 04411ad..02d5794 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -5172,7 +5172,7 @@ static void ironlake_update_pch_refclk(struct drm_device *dev)
- } else {
- /* Enable SSC on PCH eDP if needed */
- if (intel_panel_use_ssc(dev_priv)) {
-- DRM_ERROR("enabling SSC on PCH\n");
-+ DRM_DEBUG("enabling SSC on PCH\n");
- temp |= DREF_SUPERSPREAD_SOURCE_ENABLE;
- }
- }
diff --git a/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch b/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch
deleted file mode 100644
index 5840c9181..000000000
--- a/kernels/linux-libre-aufs_friendly/i915-gpu-finish.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-commit 389a55581e30607af0fcde6cdb4e54f189cf46cf
-Author: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Tue Nov 29 15:12:16 2011 +0000
-
- drm/i915: Only clear the GPU domains upon a successful finish
-
- By clearing the GPU read domains before waiting upon the buffer, we run
- the risk of the wait being interrupted and the domains prematurely
- cleared. The next time we attempt to wait upon the buffer (after
- userspace handles the signal), we believe that the buffer is idle and so
- skip the wait.
-
- There are a number of bugs across all generations which show signs of an
- overly haste reuse of active buffers.
-
- Such as:
-
- https://bugs.freedesktop.org/show_bug.cgi?id=29046
- https://bugs.freedesktop.org/show_bug.cgi?id=35863
- https://bugs.freedesktop.org/show_bug.cgi?id=38952
- https://bugs.freedesktop.org/show_bug.cgi?id=40282
- https://bugs.freedesktop.org/show_bug.cgi?id=41098
- https://bugs.freedesktop.org/show_bug.cgi?id=41102
- https://bugs.freedesktop.org/show_bug.cgi?id=41284
- https://bugs.freedesktop.org/show_bug.cgi?id=42141
-
- A couple of those pre-date i915_gem_object_finish_gpu(), so may be
- unrelated (such as a wild write from a userspace command buffer), but
- this does look like a convincing cause for most of those bugs.
-
- Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
- Cc: stable@kernel.org
- Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
- Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
-
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index d560175..036bc58 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3087,10 +3087,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj)
- return ret;
- }
-
-+ ret = i915_gem_object_wait_rendering(obj);
-+ if (ret)
-+ return ret;
-+
- /* Ensure that we invalidate the GPU's caches and TLBs. */
- obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;
--
-- return i915_gem_object_wait_rendering(obj);
-+ return 0;
- }
-
- /**
diff --git a/kernels/linux-libre-aufs_friendly/iwlagn-fix-NULL-pointer-dereference.patch b/kernels/linux-libre-aufs_friendly/iwlagn-fix-NULL-pointer-dereference.patch
deleted file mode 100644
index a53a3a425..000000000
--- a/kernels/linux-libre-aufs_friendly/iwlagn-fix-NULL-pointer-dereference.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This fix regression introduced by commit:
-
-commit 15b3f3b006b42a678523cad989bfd60b76bf4403
-Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
-Date: Fri Jun 3 07:54:13 2011 -0700
-
- iwlagn: set smps mode after assoc for 1000 device
-
-Also remove unneeded brackets on the way.
-
-Address:
-https://bugzilla.redhat.com/show_bug.cgi?id=744155
-
-If fix will not get 3.1 release, it should be applied in 3.1 stable.
-
-Cc: stable@kernel.org # 3.1+
-Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
----
- drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-index ca632f9..5004342 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-@@ -296,8 +296,8 @@ static int iwlagn_rxon_connect(struct iwl_priv *priv,
- return ret;
- }
-
-- if ((ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION) &&
-- priv->cfg->ht_params->smps_mode)
-+ if (ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION &&
-+ priv->cfg->ht_params && priv->cfg->ht_params->smps_mode)
- ieee80211_request_smps(ctx->vif,
- priv->cfg->ht_params->smps_mode);
-
---
-1.7.1
diff --git a/kernels/linux-libre-aufs_friendly/md-raid10-fix-bug-when-activating-a-hot-spare.patch b/kernels/linux-libre-aufs_friendly/md-raid10-fix-bug-when-activating-a-hot-spare.patch
deleted file mode 100644
index 880849db5..000000000
--- a/kernels/linux-libre-aufs_friendly/md-raid10-fix-bug-when-activating-a-hot-spare.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7fcc7c8acf0fba44d19a713207af7e58267c1179 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb@suse.de>
-Date: Mon, 31 Oct 2011 12:59:44 +1100
-Subject: md/raid10: Fix bug when activating a hot-spare.
-
-From: NeilBrown <neilb@suse.de>
-
-commit 7fcc7c8acf0fba44d19a713207af7e58267c1179 upstream.
-
-This is a fairly serious bug in RAID10.
-
-When a RAID10 array is degraded and a hot-spare is activated, the
-spare does not take up the empty slot, but rather replaces the first
-working device.
-This is likely to make the array non-functional. It would normally
-be possible to recover the data, but that would need care and is not
-guaranteed.
-
-This bug was introduced in commit
- 2bb77736ae5dca0a189829fbb7379d43364a9dac
-which first appeared in 3.1.
-
-Signed-off-by: NeilBrown <neilb@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/md/raid10.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/md/raid10.c
-+++ b/drivers/md/raid10.c
-@@ -1337,7 +1337,7 @@ static int raid10_add_disk(mddev_t *mdde
- mirror_info_t *p = &conf->mirrors[mirror];
- if (p->recovery_disabled == mddev->recovery_disabled)
- continue;
-- if (!p->rdev)
-+ if (p->rdev)
- continue;
-
- disk_stack_limits(mddev->gendisk, rdev->bdev,
diff --git a/kernels/linux-libre-aufs_friendly/usb-add-reset-resume-quirk-for-several-webcams.patch b/kernels/linux-libre-aufs_friendly/usb-add-reset-resume-quirk-for-several-webcams.patch
deleted file mode 100644
index 9e570dd3f..000000000
--- a/kernels/linux-libre-aufs_friendly/usb-add-reset-resume-quirk-for-several-webcams.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-commit 2394d67e446bf616a0885167d5f0d397bdacfdfc
-Author: Oliver Neukum <oneukum@suse.de>
-Date: Tue Sep 13 08:42:21 2011 +0200
-
- USB: add RESET_RESUME for webcams shown to be quirky
-
- The new runtime PM code has shown that many webcams suffer
- from a race condition that may crash them upon resume.
- Runtime PM is especially prone to show the problem because
- it retains power to the cameras at all times. However
- system suspension may also crash the devices and retain
- power to the devices.
- The only way to solve this problem without races is in
- usbcore with the RESET_RESUME quirk.
-
- Signed-off-by: Oliver Neukum <oneukum@suse.de>
- Signed-off-by: stable <stable@kernel.org>
- Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index 81ce6a8..38f0510 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -38,6 +38,24 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Creative SB Audigy 2 NX */
- { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C200 */
-+ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C250 */
-+ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam B/C500 */
-+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam Pro 9000 */
-+ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C310 */
-+ { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C270 */
-+ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Harmony 700-series */
- { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
-
-@@ -69,6 +87,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- { USB_DEVICE(0x06a3, 0x0006), .driver_info =
- USB_QUIRK_CONFIG_INTF_STRINGS },
-
-+ /* Guillemot Webcam Hercules Dualpix Exchange*/
-+ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* M-Systems Flash Disk Pioneers */
- { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
-
-commit 5b253d88cc6c65a23cefc457a5a4ef139913c5fc
-Author: Jon Levell <linuxusb@coralbark.net>
-Date: Thu Sep 29 20:42:52 2011 +0100
-
- USB: add quirk for Logitech C300 web cam
-
- My webcam is a Logitech C300 and I get "chipmunk"ed squeaky sound.
- The following trivial patch fixes it.
-
- Signed-off-by: Jon Levell <linuxusb@coralbark.net>
- Cc: stable <stable@kernel.org>
- Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index 38f0510..d6a8d82 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -44,6 +44,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Logitech Webcam C250 */
- { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C300 */
-+ { USB_DEVICE(0x046d, 0x0805), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Webcam B/C500 */
- { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index d6a8d82..caa1991 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -50,6 +50,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Logitech Webcam B/C500 */
- { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C600 */
-+ { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Webcam Pro 9000 */
- { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
-
diff --git a/libre-testing/icedove-libre/PKGBUILD b/libre-testing/icedove-libre/PKGBUILD
deleted file mode 100644
index 9beba51a8..000000000
--- a/libre-testing/icedove-libre/PKGBUILD
+++ /dev/null
@@ -1,87 +0,0 @@
-# Maintainer : Márcio Silva <coadde@adinet.com.uy>
-# Maintainer : André Silva <andre.paulista@adinet.com.uy>
-# Contributor: Esteban V. Carnevale <evcarnevale@gmail.com>
-
-# We're getting this from Debian Sid
-_debname=icedove
-_debver=10.0.3
-_debrel=3
-_debrepo=http://ftp.debian.org/debian/pool/main/
-debfile() { echo $@|sed -r 's@(.).*@\1/&/&@'; }
-
-_pkgname=$_debname
-pkgname=$_debname-libre
-pkgver=$_debver
-pkgrel=1
-pkgdesc="A libre version of Debian Icedove, the Standalone Mail/News reader based on Mozilla thunderbird."
-arch=('i586' 'i686' 'x86_64' 'mips64el')
-license=('GPL2' 'MPL' 'LGPL')
-depends=('alsa-lib' 'dbus-glib' 'desktop-file-utils' 'gtk2' 'hicolor-icon-theme' 'hunspell' 'libevent' 'libnotify' 'libvpx' 'libxt' 'mime-types' 'mozilla-common' 'nss' 'sqlite3' 'startup-notification')
-makedepends=('unzip' 'zip' 'pkg-config' 'python2' 'wireless_tools' 'yasm' 'mesa' 'autoconf2.13' 'quilt')
-optdepends=('libcanberra: for sound support')
-url="http://packages.debian.org/source/sid/$_pkgname"
-install=$_pkgname.install
-source=("$_debrepo/`debfile $_debname`_$_debver.orig.tar.bz2"
- "$_debrepo/`debfile $_debname`_$_debver-$_debrel.debian.tar.gz"
- "$_debrepo/`debfile $_debname`_$_debver-$_debrel.dsc"
- mozconfig
- channel-prefs.js
- vendor.js
- makefile.patch
- gcc47.patch
- rules.patch
- searchplugins-libre.patch)
-md5sums=('3efe2ef4d5471aae3b79531ce8aee9dc'
- 'cb3dba2916bdf2deb72248b0984c4302'
- '57e21e997a75d85fcc0dcfe30b83f1ee'
- '76e01cfd6de4d4289265882774d1ba7d'
- '476ec205162340fb0679f522c9d31c3b'
- '4eecc4fc5aafaf0da651a09eadc90bee'
- '5a6282bb005d596aa4ab1884ac6b0517'
- '66376a8e934013078f0e646e49614937'
- '2e6a57dc04b4a7255f5f1f3642af23ac'
- '8f6d5be227bb68e1558dd6674cbba446')
-
-build() {
- export QUILT_PATCHES=debian/patches
- export QUILT_REFRESH_ARGS='-p ab --no-timestamps --no-index'
- export QUILT_DIFF_ARGS='--no-timestamps'
- export LDFLAGS="$LDFLAGS -Wl,-rpath,/usr/lib/$_pkgname"
- export PYTHON="/usr/bin/python2"
-
- mv comm-esr10 "$srcdir/mozilla-build"
- mv debian "$srcdir/mozilla-build"
-
- cd "$srcdir/mozilla-build"
- quilt push -a
-
- cp "$srcdir/mozconfig" .mozconfig
- patch -Np1 -i "$srcdir/gcc47.patch"
- patch -Np1 -i "$srcdir/makefile.patch"
- patch -Np1 -i "$srcdir/rules.patch"
-
- # Removing non-free search plugins replacing them with duckduckgo and identi.ca
- patch -Np0 -i "$srcdir/searchplugins-libre.patch"
-
- make -j1 -f client.mk build MOZ_MAKE_FLAGS="$MAKEFLAGS"
-}
-
-package() {
- cd "$srcdir/mozilla-build"
- make -j1 -f client.mk DESTDIR="$pkgdir" install
-
- install -m644 "$srcdir/vendor.js" "$pkgdir/usr/lib/$_pkgname/defaults/pref"
- install -m644 "$srcdir/channel-prefs.js" "$pkgdir/usr/lib/$_pkgname/defaults/pref" # Recommend free addons
-
- for i in 16x16 22x22 24x24 32x32 48x48 256x256; do
- install -Dm644 debian/app-icons/$_pkgname${i/x*/}.png \
- "$pkgdir/usr/share/icons/hicolor/$i/apps/$_pkgname.png"
- install -Dm644 debian/app-icons/icedovebig.svg \
- "$pkgdir/usr/share/icons/hicolor/scalable/apps/$_pkgname.svg"
- done
-
- rm -rf "$pkgdir"/usr/lib/$_pkgname/{dictionaries,hyphenation}
- ln -sf /usr/share/hunspell "$pkgdir/usr/lib/$_pkgname/dictionaries"
- ln -sf /usr/share/hyphen "$pkgdir/usr/lib/$_pkgname/hyphenation"
- rm -r "$pkgdir"/usr/{include,lib/$_pkgname-devel,share/idl} # We don't want the development stuff
-}
diff --git a/libre-testing/icedove-libre/channel-prefs.js b/libre-testing/icedove-libre/channel-prefs.js
deleted file mode 100644
index 13b1ba388..000000000
--- a/libre-testing/icedove-libre/channel-prefs.js
+++ /dev/null
@@ -1,9 +0,0 @@
-//@line 2 "/build/src/comm-release/mail/app/profile/channel-prefs.js"
-pref("app.update.channel", "default");
-
-//Recommend free addons
-pref("extensions.getAddons.get.url", "http://www.gnu.org/software/gnuzilla/addons.html");
-pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-pref("extensions.getAddons.search.url", "http://www.gnu.org/software/gnuzilla/addons.html");
-pref("extensions.getMoreThemesURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-pref("extensions.webservice.discoverURL", "http://www.gnu.org/software/gnuzilla/addons.html");
diff --git a/libre-testing/icedove-libre/gcc47.patch b/libre-testing/icedove-libre/gcc47.patch
deleted file mode 100644
index 9824e6ab2..000000000
--- a/libre-testing/icedove-libre/gcc47.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- mozilla-build.orig/mozilla/ipc/chromium/src/base/file_util.cc 2012-03-06 14:26:03.000000000 -0200
-+++ mozilla-build/mozilla/ipc/chromium/src/base/file_util.cc 2012-04-04 18:50:02.094431651 -0300
-@@ -8,7 +8,7 @@
- #include <io.h>
- #endif
- #include <stdio.h>
--#if defined(ANDROID)
-+#if defined(ANDROID) || defined(OS_POSIX)
- #include <unistd.h>
- #endif
-
---- mozilla-build.orig/mozilla/ipc/chromium/src/base/message_pump_libevent.cc 2012-03-06 14:26:03.000000000 -0200
-+++ mozilla-build/mozilla/ipc/chromium/src/base/message_pump_libevent.cc 2012-04-04 19:55:24.140455837 -0300
-@@ -6,6 +6,7 @@
-
- #include <errno.h>
- #include <fcntl.h>
-+#include <unistd.h>
-
- #include "eintr_wrapper.h"
- #include "base/logging.h"
-
---- mozilla-build.orig/mozilla/ipc/chromium/src/base/file_util_linux.cc 2012-03-06 14:26:03.000000000 -0200
-+++ mozilla-build/mozilla/ipc/chromium/src/base/file_util_linux.cc 2012-04-04 20:49:49.756138306 -0300
-@@ -5,6 +5,7 @@
- #include "base/file_util.h"
-
- #include <fcntl.h>
-+#include <unistd.h>
-
- #include <string>
- #include <vector>
-
---- mozilla-build.orig/mozilla/ipc/chromium/src/base/time_posix.cc 2012-03-06 14:26:03.000000000 -0200
-+++ mozilla-build/mozilla/ipc/chromium/src/base/time_posix.cc 2012-04-04 20:55:12.678037291 -0300
-@@ -8,6 +8,7 @@
- #include <mach/mach_time.h>
- #endif
- #include <sys/time.h>
-+#include <unistd.h>
- #ifdef ANDROID
- #include <time64.h>
- #else
-
diff --git a/libre-testing/icedove-libre/icedove.install b/libre-testing/icedove-libre/icedove.install
deleted file mode 100644
index 4d4a283db..000000000
--- a/libre-testing/icedove-libre/icedove.install
+++ /dev/null
@@ -1,12 +0,0 @@
-post_install() {
- update-desktop-database -q
- gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre-testing/icedove-libre/makefile.patch b/libre-testing/icedove-libre/makefile.patch
deleted file mode 100644
index 284ca68c2..000000000
--- a/libre-testing/icedove-libre/makefile.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- mozilla-build/debian/icedove-branding/Makefile.in 2012-04-05 06:50:17.708640714 -0300
-+++ mozilla-build/debian/icedove-branding/Makefile.in 2012-04-05 06:50:41.902614597 -0300
-@@ -38,7 +38,7 @@
- # Branding Makefile for Icedove branding
-
- DEPTH = ../../..
--topsrcdir = ../../../
-+topsrcdir = ../../
- srcdir = @srcdir@
- VPATH = @srcdir@
-
diff --git a/libre-testing/icedove-libre/mozconfig b/libre-testing/icedove-libre/mozconfig
deleted file mode 100644
index 4ad7c655c..000000000
--- a/libre-testing/icedove-libre/mozconfig
+++ /dev/null
@@ -1,47 +0,0 @@
-ac_add_options --prefix=/usr
-ac_add_options --libdir=/usr/lib
-
-# System libraries
-ac_add_options --with-system-nspr
-ac_add_options --with-system-nss
-ac_add_options --with-system-jpeg
-ac_add_options --with-system-zlib
-ac_add_options --with-system-bz2
-ac_add_options --with-system-png
-ac_add_options --with-system-libevent
-ac_add_options --with-system-libvpx
-ac_add_options --enable-system-hunspell
-ac_add_options --enable-system-sqlite
-ac_add_options --enable-system-ffi
-ac_add_options --enable-system-cairo
-ac_add_options --enable-system-pixman
-ac_add_options --with-pthreads
-
-# Features
-ac_add_options --enable-startup-notification
-ac_add_options --enable-gio
-
-ac_add_options --disable-gnomevfs
-ac_add_options --disable-crashreporter
-ac_add_options --disable-updater
-ac_add_options --disable-tests
-ac_add_options --disable-mochitest
-ac_add_options --disable-installer
-
-# Optimization
-ac_add_options --enable-optimize
-
-export MOZILLA_OFFICIAL=1
-mk_add_options MOZILLA_OFFICIAL=1
-mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/moz-objdir
-
-# Icedove
-ac_add_options --disable-official-branding
-ac_add_options --with-branding=debian/icedove-branding
-
-# Parabola
-ac_add_options --disable-safe-browsing
-export BUILD_OFFICIAL=1
-mk_add_options BUILD_OFFICIAL=1
-
-# Build-generated
diff --git a/libre-testing/icedove-libre/rules.patch b/libre-testing/icedove-libre/rules.patch
deleted file mode 100644
index ce857ebd3..000000000
--- a/libre-testing/icedove-libre/rules.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- mozilla-build/config/rules.mk.orig 2012-03-06 13:44:49.000000000 -0200
-+++ mozilla-build/config/rules.mk 2012-04-05 22:24:29.473430588 -0300
-@@ -48,11 +48,11 @@
- endif
-
- ifndef INCLUDED_CONFIG_MK
--include $(topsrcdir)/config/config.mk
-+include /build/src/mozilla-build/config/config.mk
- endif
-
- ifndef INCLUDED_VERSION_MK
--include $(topsrcdir)/config/version.mk
-+include /build/src/mozilla-build/config/version.mk
- endif
-
- ifdef SDK_XPIDLSRCS
diff --git a/libre-testing/icedove-libre/searchplugins-libre.patch b/libre-testing/icedove-libre/searchplugins-libre.patch
deleted file mode 100644
index 19c1ea5ab..000000000
--- a/libre-testing/icedove-libre/searchplugins-libre.patch
+++ /dev/null
@@ -1,141 +0,0 @@
---- mail.orig/locales/en-US/searchplugins/list.txt 2012-03-27 15:56:00.000000000 -0300
-+++ mail/locales/en-US/searchplugins/list.txt 2012-04-13 05:43:25.227475353 -0300
-@@ -1,8 +1,5 @@
--amazondotcom
--aol-web-search
--bing
-+duckduckgo-ssl
- eBay
--google
--twitter
-+identica-notice-search
-+identica-people-search
- wikipedia
--yahoo
---- mail/locales/en-US/searchplugins/amazondotcom.xml 2012-03-27 15:56:00.000000000 -0300
-+++ /dev/null 2012-04-12 23:52:53.981159155 -0300
-@@ -1,11 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
--<ShortName>Amazon.com</ShortName>
--<Description>Amazon.com Search</Description>
--<InputEncoding>ISO-8859-1</InputEncoding>
--<Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHgSURBVHjalFM9TNtQEP4cB7PwM1RITUXIgsRaYEEVEyKZwhiyZAQyd0BhpFOlIjoBqhjSqVQMoVMLLAjEwECCQJkSkBqJYDOAFOMKFSf28d7DTUxiUDnp/Pzeu/vuu7t3ICKF6SLTMv2/lB0fRWKfjwDm4JJisYh0Oo3fpZLYT0SjSCQS8JAFMADNDZ3NZsnf1taiqVTKi4nGASruk5lkkmTmMB6JUKFQqO+DfX1eABWeQoVR6f7HSdM0obqu48Yw8G1tDT82NsRd1TSbU9BbGPCog8PDj+jLzurFoAVgMh4XxoNDQ6SqKi0tL9eBvAB8zZwymYxYY7EYAoEA8vm82BNTg6XUIs0MeGTZoR1mhXSnwNl4pmAbjU7mcjkKhkL1ynMnntZ4OEw3VyrV8utk7s5TdW++0QXz+1i3P7IK36t+PCfVn1OQOoOA0gXr5DPak+cPXbBK+/T3S69AtY3LJ98vZ1or/iLr+pTuvr59/A6s003UdqZFJF/PCKQ3o5CUznoBST2AfbEF/9iqYEDaIfwj73VJPEfgNTe0tWNYR0uwy9uOW0OkrgHI7z5ADo2C7v48nLV3XHKAT+x/1m1sX58xsBxg8rZJrDYD8DHHp4aJj/MK09sXjPOt46PcCzAACXY8/u34wN0AAAAASUVORK5CYII=</Image>
--<Url type="text/html" method="GET" template="http://www.amazon.com/exec/obidos/external-search/">
-- <Param name="field-keywords" value="{searchTerms}"/>
-- <Param name="mode" value="blended"/>
--</Url>
--<SearchForm>http://www.amazon.com/</SearchForm>
--</SearchPlugin>
---- mail/locales/en-US/searchplugins/aol-web-search.xml 2012-03-27 15:56:00.000000000 -0300
-+++ /dev/null 2012-04-12 23:52:53.981159155 -0300
-@@ -1,10 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
--<os:ShortName>AOL Web Search</os:ShortName>
--<os:Description>The AOL Search engine delivers great web search results, enhanced by Google, plus relevant multimedia results delivered on a single page-so you can search less and discover more.</os:Description>
--<os:InputEncoding>UTF-8</os:InputEncoding>
--<os:Image width="16" height="16">data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%10%00%00%00%10%08%06%00%00%00%1F%F3%FFa%00%00%00%06bKGD%00%FF%00%FF%00%FF%A0%BD%A7%93%00%00%00%09pHYs%00%00%00H%00%00%00H%00F%C9k%3E%00%00%00%FAIDAT8%CB%9D%D3%B1q%C2%40%10%85%E1%0F%8F%0B%A0%04%97%00%1D%40%05%C6%01%B9%95*1%AA%C0C%05%E0%84%D4%E4%0A%0C%15H%EE%40%1D%98%12%D4%81%1D%E84%C8B%60%C9%2F9%AD%EE%EE%9F%DD%B7%7B%23%B0%DC%7D%A3D%22%8D%F7%06h%D4%00%D4*%02(%EF%03%B8%EB%F87Af%B9%7B%EF%03%B8o%C59%DE%A4%F1%E1%3F%25%EC%91%60%83%87%B0%FF%89m%F8%5Et%F9S%032%3C%E1%0B%E3%D6%99%02s%7C%848%91%C6E%1B0%C1%0B%9E%AFd%9A%E0%D4%80l%B1%96%C6eebE%9C%DC(%F51dRk%15%B2%FD%D5%85%B1a*%CF%80%AA%84%FC%C6%E1%23f%8Dx%8D)%E76n%10aq%C5%C4%03%B2%B0%26%D2%F8To%D6%80Y0q%8AW%97m%1C%23%EA%9A%CE%E6%20%AD%82%91%5D%83T%AA%BAp%A1%AE%B7Pk%2F%8D%A3%BF%9C%ECz%0B9%E6%7D.7K(%C3%3A%F89%FF%00_%82G%C3%D5%0E(%3E%00%00%00%00IEND%AEB%60%82</os:Image>
--<SearchForm>http://search.aol.com</SearchForm>
--<os:Url type="text/html" method="GET" template="http://search.aol.com/aol/search">
-- <os:Param name="query" value="{searchTerms}"/>
--</os:Url>
--</SearchPlugin>
---- mail/locales/en-US/searchplugins/bing.xml 2012-03-06 13:44:50.000000000 -0200
-+++ /dev/null 2012-04-25 14:16:16.847855589 -0300
-@@ -1,17 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
-- <ShortName>Bing</ShortName>
-- <Description>Bing. Search by Microsoft.</Description>
-- <InputEncoding>UTF-8</InputEncoding>
-- <Image width="16" height="16" type="image/x-icon">data:image/x-icon;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAVpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8ysf97zf+24//F6f/F6f/F6f+K0/9QvP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8krP+Z2P/////////w+f/F6f/F6f/i9P/////////T7v9Bt/8Vpv8Vpv8Vpv8Vpv/T7v/////w+f97zf8Vpv8Vpv8Vpv8Vpv9QvP/T7v/////w+f9Bt/8Vpv8Vpv97zf////////9QvP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8krP/i9P/////i9P8Vpv8Vpv+24//////i9P8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv+K0/////////8Vpv8Vpv/F6f////////8krP8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv+n3v/////w+f8Vpv8Vpv/F6f////////+n3v8krP8Vpv8Vpv8Vpv8Vpv8Vpv9tx/////////+Z2P8Vpv8Vpv/F6f/////////////i9P+K0/9QvP9QvP9tx//F6f////////+n3v8Vpv8Vpv8Vpv/F6f/////T7v+Z2P/i9P////////////////////+24/9QvP8Vpv8Vpv8Vpv8Vpv/F6f/////F6f8Vpv8Vpv8krP9QvP9QvP9Bt/8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv/F6f/////F6f8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv9Bt/9QvP9Bt/8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8Vpv8AAHBsAABhdAAAbiAAAHJ0AABsaQAAdGkAACBDAABlbgAAUEEAAEVYAAAuQwAAOy4AAEU7AABBVAAAQ00AAC5W</Image>
-- <Url type="application/x-suggestions+json" template="http://api.bing.com/osjson.aspx">
-- <Param name="query" value="{searchTerms}"/>
-- <Param name="form" value="OSDJAS"/>
-- </Url>
-- <Url type="text/html" method="GET" template="http://www.bing.com/search">
-- <Param name="q" value="{searchTerms}"/>
-- </Url>
-- <Url type="application/x-moz-keywordsearch" method="GET" template="http://www.bing.com/search">
-- <Param name="q" value="{searchTerms}"/>
-- </Url>
-- <SearchForm>http://www.bing.com/search</SearchForm>
--</SearchPlugin>
---- mail/locales/en-US/searchplugins/google.xml 2012-03-27 15:56:00.000000000 -0300
-+++ /dev/null 2012-04-12 23:52:53.981159155 -0300
-@@ -1,14 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
--<ShortName>Google</ShortName>
--<Description>Google Search</Description>
--<InputEncoding>UTF-8</InputEncoding>
--<Image width="16" height="16">data:image/png;base64,AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs9Pt8xetPtu9FsfFNtu%2BTzvb2%2B%2Fne4dFJeBw0egA%2FfAJAfAA8ewBBegAAAAD%2B%2FPtft98Mp%2BwWsfAVsvEbs%2FQeqvF8xO7%2F%2F%2F63yqkxdgM7gwE%2FggM%2BfQA%2BegBDeQDe7PIbotgQufcMufEPtfIPsvAbs%2FQvq%2Bfz%2Bf%2F%2B%2B%2FZKhR05hgBBhQI8hgBAgAI9ewD0%2B%2Fg3pswAtO8Cxf4Kw%2FsJvvYAqupKsNv%2B%2Fv7%2F%2FP5VkSU0iQA7jQA9hgBDgQU%2BfQH%2F%2Ff%2FQ6fM4sM4KsN8AteMCruIqqdbZ7PH8%2Fv%2Fg6Nc%2Fhg05kAA8jAM9iQI%2BhQA%2BgQDQu6b97uv%2F%2F%2F7V8Pqw3eiWz97q8%2Ff%2F%2F%2F%2F7%2FPptpkkqjQE4kwA7kAA5iwI8iAA8hQCOSSKdXjiyflbAkG7u2s%2F%2B%2F%2F39%2F%2F7r8utrqEYtjQE8lgA7kwA7kwA9jwA9igA9hACiWSekVRyeSgiYSBHx6N%2F%2B%2Fv7k7OFRmiYtlAA5lwI7lwI4lAA7kgI9jwE9iwI4iQCoVhWcTxCmb0K%2BooT8%2Fv%2F7%2F%2F%2FJ2r8fdwI1mwA3mQA3mgA8lAE8lAE4jwA9iwE%2BhwGfXifWvqz%2B%2Ff%2F58u%2Fev6Dt4tr%2B%2F%2F2ZuIUsggA7mgM6mAM3lgA5lgA6kQE%2FkwBChwHt4dv%2F%2F%2F728ei1bCi7VAC5XQ7kz7n%2F%2F%2F6bsZkgcB03lQA9lgM7kwA2iQktZToPK4r9%2F%2F%2F9%2F%2F%2FSqYK5UwDKZAS9WALIkFn%2B%2F%2F3%2F%2BP8oKccGGcIRJrERILYFEMwAAuEAAdX%2F%2Ff7%2F%2FP%2B%2BfDvGXQLIZgLEWgLOjlf7%2F%2F%2F%2F%2F%2F9QU90EAPQAAf8DAP0AAfMAAOUDAtr%2F%2F%2F%2F7%2B%2Fu2bCTIYwDPZgDBWQDSr4P%2F%2Fv%2F%2F%2FP5GRuABAPkAA%2FwBAfkDAPAAAesAAN%2F%2F%2B%2Fz%2F%2F%2F64g1C5VwDMYwK8Yg7y5tz8%2Fv%2FV1PYKDOcAAP0DAf4AAf0AAfYEAOwAAuAAAAD%2F%2FPvi28ymXyChTATRrIb8%2F%2F3v8fk6P8MAAdUCAvoAAP0CAP0AAfYAAO4AAACAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAQAA</Image>
--<Url type="application/x-suggestions+json" method="GET" template="http://suggestqueries.google.com/complete/search?output=firefox&amp;hl={moz:locale}&amp;q={searchTerms}"/>
--<Url type="text/html" method="GET" template="http://www.google.com/search">
-- <Param name="q" value="{searchTerms}"/>
-- <Param name="ie" value="utf-8"/>
-- <Param name="oe" value="utf-8"/>
-- <Param name="aq" value="t"/>
--</Url>
--<SearchForm>http://www.google.com</SearchForm>
--</SearchPlugin>
---- mail/locales/en-US/searchplugins/twitter.xml 2012-03-27 15:56:00.000000000 -0300
-+++ /dev/null 2012-04-12 23:52:53.981159155 -0300
-@@ -1,10 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
--<ShortName>Twitter Search</ShortName>
--<Description>Realtime Twitter Search</Description>
--<InputEncoding>UTF-8</InputEncoding>
--<Image width="16" height="16">data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%20%00%00%00%20%08%06%00%00%00szz%F4%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%00%06%60IDATx%DA%ACWMLSY%14%BE%F7%F5%97%B6%96%96%16P%84q%02H%A0%01%85%08%26%C4%18%C9D%60%D8L2%0Bfm2%89%86%85%3B%E2l%5D%BA%9Ad%E2%CEY%B8%18c2a%8C%B3%10%893%02e%98d%F0%07%22c%D0%22%88%C4%01K)%D0%3F%FA%FF%DE%BB%F3%DD%F7Z%82%B5%16%A8%DE%E4%B6%AF%AF%EF%DD%F3%DDs%BEs%BEs)c%8C%F0A)%25%D9q%F9%F2eC%7F%7F%7F%1D.%BF%12%04%A1%F30F%22%91%10%A3%D1%E8%92%C1%60ponn%FE%3D99%E9%BDz%F5%AAL%3Ea(%B6%F9G%16%04%1F%83%83%83%E6%B1%B1%B1oVVV%86%E2%F1%F8%7F%C9d2%22%8Ab%2C%95J%C5p%1D%8A%C5b%9E%85%85%85%1F%EF%DF%BF%DF%06%90%9A%CF%0A%00%3B%D2%3Fy%F2%A4okkk%0C%06%A3%B8%CF%D22c1%91%B1%B8%C4%98%84kY%96%19%3C%B1%B6%B8%B8%F83F%13w%DE%E7%02%40%1F%3E%7CX%BB%BA%BAz%0B%C6%23%DCx%24%CD%D8%F30c%7F%FAe%E6%DE%90%D9%1B%40JIL%19%E1px%05%5E%F8a%60%60%C0%FE)%00%B4%D9%1F%D8%BDA%92%A4%13v%BB%FD%8CN%A7%B3D%25B%A6%02%8C%3C%0E2%12H1%A2%C1%3EkJ(%E9rP%D2x%88%92%92%92%92J%97%CB%F5%F5%F2%F2%F2%08%5E%0FcJ%C5%80%D8%01p%EC%D81%23%10%B94%1A%8DM%82C%BC%09BfB%8C%F8%93%8Cp~%8A%A0%DB%9B%18%23V%1D!%D5%00R%AA%D3j%9DNg%3D%80%B8n%DF%BE%ED%EB%EC%ECL%EE%5E8%18%0C%12%84J%9A%9B%9BK%5C%BAt)%BD'%00%B0%5D%83Lp%02%84%86%03%88%88%8C%84E%D5%B8%40%D4H%F3%FB~%98%89c%AF%1C%08%3CU%D6%D6%D6%F6%9D%CDfs%99%CD%E64%F8%B1%C3%07%AC%25%E9%F5%FA%8D%8E%8E%0E%CF%F8%F8%F8%FC%C4%C4%C4z%BE%AC%D1%E6%FC%D6dl%91%EC%93%BB%19%C6%C1H%84%E1%3F%CE%1BJ%60%C0%D4%D4%D4%D4%AB%D5j%BBr%C9%98%E1V%1A%E9%EB%F5%F9%7C%7F%9C%3Bw%EE%D7%8B%17%2F%CE%DE%B8q%23%5D%08%40%C1A3%93%7B%22%8DI9w%B5z%93H%88%E9%83g%E16-%1E%B6X%2C%0E%84%F5%08%C0V%9D%3F%7F%FE%A7%40%200%3D44%24%15%0D%20%81W%E7%B7%19%F1%26%0B%E7%9F%11%00%1CzJ%9Cz%22%80'%E5eee%3D%B5%B5%B5%1B%ED%ED%ED%EF%00%60%A5(%00%0A%B9%E0%C0%F1%0D%BEuV%F09%9E5%87%0D%94%9C%B6S%D2b%A5%C4d29%EB%EA%EA%BE%9E%99%99%19%ED%EA%EA%DAp%BB%DD%09%85%7B%C5%A4NB%DE%7Bn%23.%8BQF%FEA*%AF'9%5CJP%C6%2B0%DBz%7B%7BKv%C8_%0C%00%BA%8F)P%D5G%3E%A4%F1%26%08%23%AA%0E%D3%19%8D%C6%A3%C8%16%FD'%018%C8%1023%ABu(v4%9DNgq%1E%9C%03d%CF%E8%ABCfd%A7zV%80%8C%3C%23R%B2%9C%0E%85B%3E%BF%DF%9F%CE.s%60%00%DC%B5%A5Z%F5%BB0%09)%A92%12%D2%5E%8AL0%A8%85%01)%E8%F7z%BDsSSS%F1%A2%B2%80C%B6%A3%02v%97%0B%CA%A2TY7%0FG%A8%0A%E0%10%CA%9AE%ABz%C2%EF%DF%D8z%F4%E8%91%7Bzz%FA%19f%B2%E84%D4!%A0G%60%BC%D2H%F7%24%10%F7%12%E2-n%05%83%5BH%BF%C9%7B%F7%EE%0D%0D%0F%0F%2F%EF%16.m1%F1%CF%EA%C3%5Ea%E0%C6%D1%BC%2CC%07%1E%8C%8E%8E%FE~%E7%CE%9D%C7%3C%8BsI%BA%BB~%B3%BDH%26g%CA%F0~%DA%10%A6%F4%2Fr%10%A5x%B1%B2%B2r%1E%B7%22%B9%CB%EFx%00%82%22%A3%F5%8AB%C5d%BEC%BD%A0%C6.w%F0%02%F36F%88%13%5C0%EF%E1%3F%D4%7F%7DCCC3%A4%FEBww%B7%EE%E4%C9%93%B7%20%CD%DE%BC%1E%98%9D%9D%15%A1%E1k%40%2CrI%2CE%DE%98%81%20%D7%1B1D%EF)%9A%14tJ%8A4%87E.%DD%1FN~%9F%CB%B6N%AF7B%90N%94%97%97%7F%7F%FC%F8%F1o%A1%88%A5y%3D%80%064%05%97-!n%DB(%97%0E%0E%80%A7%91%2F%99%89%7Bf%F2%EB%95%04%23%0F%FC%10%1B4%2C%5Cth%1EO%F1M%1C%C6%FB'%AC%02%BE)%85%16%D4566%F6%9F%3Auj%1A%7F%3D%CD%12q%C7%03%D7%AF_O%A1%C1XX__%7F%89j%952a%85F%0BUr%5Ef%EF%97a%3Ex%B3%C2%3B%A4%97P%C6%17%91%0F%E7%BF%F0%D0%C4%86%3A%03)%A5%E1%D1Z%ADV%DEqu%5C%B9r%C5%94%8F%84%CC%E3%F1%AC%A3%85%FA%0BMD%88%A7%5B%BD%99%12%17%FA%3F%83%A0%F6%00%B9ZPP%2F%F0%40%1C%A2%B4%00A%E2z%C0%B5%00%C6%E1%08SCEE%85!o%16%A0e%8A%A0L%8E%A2-%9F%85%17%D2%A5%20%DAi%BB%A0%82%D0%A8%20%D8%01D%89%A7i%12%EEK%CA%AA%17%11b8B%B0%80g%DA%8Fi%81%84%5C%F5%A0%D9%FC%0D%C4%F9%02MDC5%E2%D8%E5%14%00%40%26sp%2B%EF%96%E5%7Dx%80e%AA%A4MG%89%15%7C%D2(%ED%1C%91%E1%DD%08%0E7%F2G%0B%D1%C8%C8H%B8%BE%BE~%18%00%8E%B6%B6%B6%5Ep8%1C55Po%B3F%20%D5FF%3C%88%EF%BB%04%CF%06%F6%5EX%F2%15%2B%1BD%A8%0DZ%C0%C9%C8%01%80%E8%DBkkk%8B(%C9%89%82b%04B%AEB%B7%7F%C1%A5%01%20x%D7%5B%E3%D0k4%ED6%AA%10%937%18%5C%E3%A3%A2%1A%16%9A%07%80%5E%A3vD_*%E0%15%E3%C9%D7%AF_%3F%C7%89%EA%196%19%CF%ED%5E%F3%F2%08%A7%9EZ%F4o%83x%F11NB!%14*)%7B%5CKH%EA%91%AD%D0%E4%CF%F1%C1%8D%BFz%F5%EA%D9%B5k%D7%06%AA%AA%AA%9C%D9%08r%BB4%DF%E9x7%88%BE%BE%3E%E7%D9%B3g%CF477%F7%B5%B4%B4t%22%24UHWd6%E5%E7%08%0Af%D3%DC%0D%F0%B5%F8%19%92%D7a%C4%3B%B6%B4%B4%F4%12%C7%BE%BB7o%DE%BC%3B%3F%3F%FF6%5B%03%F6%03%40%19%D5%D5%D5%25%3D%3D%3DG%90%C7%AD%A8%E9%EDh.%1BA%D4%0A%FC6%E1%5BGs%5E%86%5D%02%EDO%E3%3C%10x%81%81*%EB%86%18M%E1%DC%B9%86%BF%C5%DD%DE%FF_%80%01%00%94%13%9D%26%E9%81%03P%00%00%00%00IEND%AEB%60%82</Image>
--<Url type="text/html" method="get"
-- template="http://search.twitter.com/search?q={searchTerms}"/>
--<SearchForm>http://search.twitter.com/</SearchForm>
--</SearchPlugin>
--
---- mail/locales/en-US/searchplugins/yahoo.xml 2012-03-27 15:56:00.000000000 -0300
-+++ /dev/null 2012-04-12 23:52:53.981159155 -0300
-@@ -1,13 +0,0 @@
--<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
--<ShortName>Yahoo</ShortName>
--<Description>Yahoo Search</Description>
--<InputEncoding>UTF-8</InputEncoding>
--<Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbgJqAIoCdgCaAnoAnhKCAKYijgCuLpIAskKeALpSpgC+Yq4AzHy8ANqezgDmvt4A7tLqAPz5+wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKlRFIoABWAKERERE6ADcKMzzu2hOgAAhERK8REWCWBERE36ERMHMEREvo6iEgY6hEn6Pu0mAzqkz/xjMzoDNwpERERDoAMzAKlERIoAAzMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AADAOQAAgBkAAAAPAAAACQAAAAkAAAAIAAAACAAAAAgAAIAYAADAOAAA//8AAP//AAD//wAA</Image>
--<Url type="application/x-suggestions+json" method="GET"
-- template="http://ff.search.yahoo.com/gossip?output=fxjson&amp;command={searchTerms}" />
--<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
-- <Param name="p" value="{searchTerms}"/>
-- <Param name="ei" value="UTF-8"/>
--</Url>
--<SearchForm>http://search.yahoo.com/</SearchForm>
--</SearchPlugin>
---- /dev/null 2012-04-12 23:52:53.981159155 -0300
-+++ mail/locales/en-US/searchplugins/duckduckgo-ssl.xml 2012-04-09 14:43:56.000000000 -0300
-@@ -0,0 +1,11 @@
-+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
-+<os:ShortName>DuckDuckGo RU SSL</os:ShortName>
-+<os:Description>DDG Search + Google's suggestions (Russian)</os:Description>
-+<os:InputEncoding>UTF-8</os:InputEncoding>
-+<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAANcNAADXDQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJmlk8pf6+v3s/v7+++zr/fcnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnIOwBJyDscCcg7PZttJ7/7Pfs//////++xO7/S5GA/ycg7P8nIOz2JyDscCcg7AEAAAAAAAAAAAAAAAAnIOwBJyDstScg7P8nIOz/Y8p5/2fHZf9Yv0z/YcF2/1rBUv8nIOz/JyDs/ycg7P8nIOy1JyDsAQAAAAAAAAAAJyDscCcg7P8nIOz/JyDs/4jQoP/p9+n//////05X3v9LkYD/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAJyDsJicg7PYnIOz/JyDs/zUu7f/+/v////////////89N+7/JyDs/yUo7f8nIOz/JyDs/ycg7P8nIOz2JyDsJicg7IAnIOz/JyDs/ycg7P9hXPH////////////t/P//GIr2/wfD+/8Gyfz/DKv5/yM57/8nIOz/JyDs/ycg7H8nIOyzJyDs/ycg7P8nIOz/jov1////////////Otz9/w3G/P8cWfH/JSvt/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDs5icg7P8nIOz/JyDs/7u5+f///////////27l/v8E0v3/BNL9/wTQ/f8Oofn/IT7v/ycg7P8nIOz/JyDs5icg7OYnIOz/JyDs/ycg7P/p6P3/uWsC////////////5fr//6Po/f8Thfb/DKv5/w6f+f8nIOz/JyDs/ycg7OYnIOyzJyDs/ycg7P8nIOz/9/b+/////////////////7lrAv/V1Pv/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOyzJyDsgCcg7P8nIOz/JyDs/8/N+///////////////////////iIX1/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDsfycg7CYnIOz2JyDs/ycg7P9FP+7/q6n4/+7u/f/n5v3/fXn0/yoj7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7CYAAAAAJyDscCcg7P8nIOz/wsD6/+no/f/Y1/z/eHTz/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7HAAAAAAAAAAACcg7AEnIOy1JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs/ycg7LUnIOwBAAAAAAAAAAAAAAAAJyDsAScg7HAnIOz2JyDs/ycg7P8nIOz/JyDs/ycg7P8nIOz/JyDs9icg7HAnIOwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJyDsJicg7IAnIOyzJyDs5icg7OYnIOyzJyDsgCcg7CYAAAAAAAAAAAAAAAAAAAAA+B8AAPAPAADAAwAAwAMAAIABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAACAAQAAwAMAAMADAADwDwAA+B8AAA==</os:Image>
-+<SearchForm>https://duckduckgo.com/</SearchForm>
-+<os:Url type="text/html" method="GET" template="https://duckduckgo.com/?q={searchTerms}&amp;kl=ru-ru">
-+</os:Url><os:Url type="application/x-suggestions+json" method="GET" template="http://ddgg.nfriedly.com/complete/search?output=firefox&amp;hl=ru&amp;q={searchTerms}">
-+</os:Url><os:Url type="application/opensearchdescription+xml" method="GET" template="http://mycroft.mozdev.org/updateos.php/id0/duckduckgo_ssl.xml" rel="self">
-+</os:Url>
-+</SearchPlugin>
---- /dev/null 2012-04-12 23:52:53.981159155 -0300
-+++ mail/locales/en-US/searchplugins/identica-notice-search.xml 2012-04-13 05:15:55.000000000 -0300
-@@ -0,0 +1,7 @@
-+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
-+<os:ShortName>Identi.ca Notice Search</os:ShortName>
-+<os:InputEncoding>UTF-8</os:InputEncoding>
-+<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAABGD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAOAHAADgBwAA4AcAAOAHAADgBwAA4AcAAOAHAADgBwAA4AcAAOAHAADgBwAA//8AAP//AAA=</os:Image>
-+<os:Url type="text/html" method="GET" template="http://identi.ca/search/notice?q={searchTerms}">
-+</os:Url>
-+</SearchPlugin>
---- /dev/null 2012-04-12 23:52:53.981159155 -0300
-+++ mail/locales/en-US/searchplugins/identica-people-search.xml 2012-04-13 05:15:53.000000000 -0300
-@@ -0,0 +1,7 @@
-+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
-+<os:ShortName>Identi.ca People Search</os:ShortName>
-+<os:InputEncoding>UTF-8</os:InputEncoding>
-+<os:Image width="16" height="16">data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAABGD6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAABAQEBAQEBAQEBAAAAAAAAAQEBAQEBAQEBAQAAAAAAAAEBAQEBAQEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA//8AAOAHAADgBwAA4AcAAOAHAADgBwAA4AcAAOAHAADgBwAA4AcAAOAHAADgBwAA//8AAP//AAA=</os:Image>
-+<os:Url type="text/html" method="GET" template="http://identi.ca/search/people?q={searchTerms}">
-+</os:Url>
-+</SearchPlugin>
diff --git a/libre-testing/icedove-libre/vendor.js b/libre-testing/icedove-libre/vendor.js
deleted file mode 100644
index 279bdc158..000000000
--- a/libre-testing/icedove-libre/vendor.js
+++ /dev/null
@@ -1,12 +0,0 @@
-// Forbid application updates
-lockPref("app.update.enabled", false);
-
-// Use LANG environment variable to choose locale
-pref("intl.locale.matchOS", true);
-
-// Disable default mailer checking.
-pref("mail.shell.checkDefaultMail", false);
-
-// Don't disable our bundled extensions in the application directory
-pref("extensions.autoDisableScopes", 11);
-pref("extensions.shownSelectionUI", true);
diff --git a/libre/foomatic/PKGBUILD b/libre/foomatic/PKGBUILD
deleted file mode 100644
index 5446bb579..000000000
--- a/libre/foomatic/PKGBUILD
+++ /dev/null
@@ -1,92 +0,0 @@
-# $Id: PKGBUILD 155771 2012-04-06 10:09:10Z andyrtr $
-# Maintainer: Andreas Radke <andyrtr@archlinux.org>
-
-pkgbase="foomatic"
-pkgname=('foomatic-db' 'foomatic-filters-libre' 'foomatic-db-engine')
-arch=('i686' 'x86_64' 'mips64el') # needs to be changed in the subpackages when makepkg will support it
-_snapdate=20120406
-_filtersver=4.0.15
-_enginever=4.0.8
-pkgver=${_filtersver}_${_snapdate}
-pkgrel=1
-epoch=1
-makedepends=('cups' 'perl' 'libxml2' 'enscript' 'perl' 'net-snmp' 'bash')
-#_url=http://www.openprinting.org/download/foomatic/ # switch after build
-_url=ftp://ftp.archlinux.org/other/foomatic/
-source=(https://repo.parabolagnulinux.org/other/${pkgbase}-filters-libre-${_filtersver}.tar.gz
- ${_url}/$pkgbase-db-engine-${_enginever}.tar.gz
- ${_url}/$pkgbase-db-4.0-${_snapdate}.tar.gz)
-url="http://www.linuxprinting.org/foomatic.html"
-options=('!emptydirs')
-
-mksource() {
- if [ ! -d ${pkgbase}-filters-libre-${_filtersver}/ ]; then
- wget -O - http://www.openprinting.org/download/foomatic/foomatic-filters-${_filtersver}.tar.gz | \
- bsdtar xzf -
-
- mv ${pkgbase}-filters{,-libre}-${_filtersver}/
- fi
-
- rm -rfv ${pkgbase}-filters-libre-${_filtersver}/test/{lsbfuncs,shfuncs,tcm,tetapi}.sh
- bsdtar cvzf ${pkgbase}-filters-libre-${_filtersver}.tar.gz ${pkgbase}-filters-libre-${_filtersver}/
-}
-
-package_foomatic-db() {
-
- pkgdesc="Foomatic - The collected knowledge about printers, drivers, and driver options in XML files, used by foomatic-db-engine to generate PPD files."
-# arch=('any')
- license=('GPL' 'custom')
- depends=('perl' 'libxml2')
- replaces=('foomatic-db-ppd' 'foomatic-db-hpijs')
- conflicts=('foomatic-db-ppd' 'foomatic-db-hpijs')
- provides=('foomatic-db-hpijs')
-
- cd ${srcdir}/${pkgname}-${_snapdate}
- ./configure --prefix=/usr
- make DESTDIR=${pkgdir} install
- install -v -Dm644 ${srcdir}/${pkgname}-${_snapdate}/COPYING ${pkgdir}/usr/share/licenses/${pkgname}/COPYING
-}
-
-package_foomatic-filters-libre() {
-
- pkgdesc="Foomatic - Filter scripts used by the printer spoolers to convert the incoming PostScript data into the printer's native format."
-# arch=('i686' 'x86_64')
- license=('GPL')
- backup=(etc/foomatic/filter.conf)
- depends=('glibc')
- provides=("foomatic-filters=${pkgver}")
- replaces=('foomatic-filters')
- conflicts=('foomatic-filters')
- optdepends=('perl: for the "beh" Backend End Handler used by cups'
- 'net-snmp: certain (mostly HP) printers need it to work')
-
- cd ${srcdir}/${pkgname}-${_filtersver}
- ./configure --prefix=/usr --sysconfdir=/etc
- make
- make DESTDIR=${pkgdir} install
-}
-
-package_foomatic-db-engine() {
-
- pkgdesc="Foomatic - Foomatic's database engine generates PPD files from the data in Foomatic's XML database. It also contains scripts to directly generate print queues and handle jobs."
-# arch=(i686 x86_64)
- license=('GPL')
- depends=('perl' 'libxml2' 'foomatic-filters' 'bash')
-
- cd ${srcdir}/foomatic-db-engine-${_enginever}
- ./configure --prefix=/usr
- make
- eval `perl -V:archname`
- make DESTDIR=${pkgdir} \
- INSTALLARCHLIB=/usr/lib/perl5/vendor_perl/ \
- INSTALLSITELIB=/usr/lib/perl5/vendor_perl/ \
- INSTALLSITEARCH=/usr/lib/perl5/vendor_perl/ install
- /usr/bin/find ${pkgdir} -name '.packlist' -delete
- # fix permissions
- chmod 755 ${pkgdir}/usr/lib{,/perl5,/perl5/vendor_perl}
-}
-
-
-md5sums=('957a07820f47804ce76dbb59cd79cd1b'
- '5283cd5125a96dc0b35d896326512b1a'
- 'ccb72c201e14bfc5eb23ea839ecc0623')
diff --git a/libre/ghostscript-libre/SRCBUILD b/libre/ghostscript-libre/SRCBUILD
deleted file mode 100644
index dc28e857e..000000000
--- a/libre/ghostscript-libre/SRCBUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-# $Id: PKGBUILD 123066 2011-05-07 23:01:49Z stephane $
-# Maintainer: AndyRTR <andyrtr@archlinux.org>
-# Maintainer (Parabola): xihh
-
-pkgname=ghostscript-libre
-pkgver=9.04
-pkgrel=5
-pkgdesc="An interpreter for the PostScript language without non-free files"
-arch=('any')
-license=('GPL3') #non free files removed
-url="http://www.ghostscript.com/"
-source=(http://downloads.ghostscript.com/public/ghostscript-${pkgver}.tar.bz2)
-md5sums=('9f6899e821ab6d78ab2c856f10fa3023')
-options=(!strip !docs !libtool !emptydirs !zipman !purge)
-
-build() {
- cd ${srcdir}/ghostscript-${pkgver}
-
- export PKGEXT=.src.tar.xz
-
- # delete non-free packages
- grep -l "are not altered" Resource/CMap/* | xargs rm -fv
-}
-
-package() {
- cd ${srcdir}
- export PKGEXT=.src.tar.xz
- export PKGDEST=${startdir}
-
- mv ghostscript-${pkgver} ${pkgdir}/
-
-}
diff --git a/libre/ghostscript-libre/ghostscript-cups-rgbw.patch b/libre/ghostscript-libre/ghostscript-cups-rgbw.patch
deleted file mode 100644
index f6ae2dae7..000000000
--- a/libre/ghostscript-libre/ghostscript-cups-rgbw.patch
+++ /dev/null
@@ -1,263 +0,0 @@
-diff -up ghostscript-9.04/cups/gdevcups.c.cups-rgbw ghostscript-9.04/cups/gdevcups.c
---- ghostscript-9.04/cups/gdevcups.c.cups-rgbw 2011-08-05 12:12:21.000000000 +0100
-+++ ghostscript-9.04/cups/gdevcups.c 2011-08-22 10:54:24.614010581 +0100
-@@ -225,6 +225,7 @@ typedef struct gx_device_cups_s
- unsigned short EncodeLUT[gx_max_color_value + 1];/* RGB value to output color LUT */
- int Density[CUPS_MAX_VALUE + 1];/* Density LUT */
- int Matrix[3][3][CUPS_MAX_VALUE + 1];/* Color transform matrix LUT */
-+ int user_icc;
- int cupsRasterVersion;
-
- /* Used by cups_put_params(): */
-@@ -426,6 +427,7 @@ gx_device_cups gs_cups_device =
- {0x00}, /* EncodeLUT */
- {0x00}, /* Density */
- {0x00}, /* Matrix */
-+ 0,
- 3 /* cupsRasterVersion */
- };
-
-@@ -1182,15 +1184,18 @@ cups_map_cmyk(gx_device *pdev, /* I - D
-
- case CUPS_CSPACE_RGB :
- case CUPS_CSPACE_RGBW :
-+ c0 = c + k;
-+ c1 = m + k;
-+ c2 = y + k;
- if (cups->header.cupsColorSpace == CUPS_CSPACE_RGBW) {
-- c0 = c;
-- c1 = m;
-- c2 = y;
-- c3 = k;
-- } else {
-- c0 = c + k;
-- c1 = m + k;
-- c2 = y + k;
-+ if ((k >= frac_1 - 1) ||
-+ ((c0 >= frac_1) && (c1 >= frac_1) && (c2 >= frac_1))) {
-+ c0 = frac_1;
-+ c1 = frac_1;
-+ c2 = frac_1;
-+ c3 = frac_1;
-+ } else
-+ c3 = 0;
- }
-
- if (c0 < 0)
-@@ -1212,11 +1217,12 @@ cups_map_cmyk(gx_device *pdev, /* I - D
- out[2] = frac_1 - (frac)cups->Density[c2];
-
- if (cups->header.cupsColorSpace == CUPS_CSPACE_RGBW) {
-- if (c3 < 0)
-- c3 = 0;
-- else if (c3 > frac_1)
-- c3 = frac_1;
-- out[3] = frac_1 - (frac)cups->Density[c3];
-+ if (c3 == 0)
-+ out[3] = frac_1;
-+ else if (c3 == frac_1)
-+ out[3] = 0;
-+ else
-+ out[3] = frac_1;
- }
- break;
-
-@@ -2034,10 +2040,15 @@ cups_map_color_rgb(gx_device *pdev,
- * cups->DecodeLUT actually maps to RGBW, not CMYK...
- */
-
-- k = cups->DecodeLUT[c3];
-- c = cups->DecodeLUT[c0] + k - gx_max_color_value;
-- m = cups->DecodeLUT[c1] + k - gx_max_color_value;
-- y = cups->DecodeLUT[c2] + k - gx_max_color_value;
-+ if (c3 == 0) {
-+ c = 0;
-+ m = 0;
-+ y = 0;
-+ } else {
-+ c = cups->DecodeLUT[c0];
-+ m = cups->DecodeLUT[c1];
-+ y = cups->DecodeLUT[c2];
-+ }
-
- if (c > gx_max_color_value)
- prgb[0] = gx_max_color_value;
-@@ -2282,20 +2293,20 @@ cups_map_rgb_color(gx_device *pdev,
- switch (cups->header.cupsBitsPerColor)
- {
- default :
-- i = 0x0e;
-+ i = 0x00;
- break;
- case 2 :
-- i = 0xfc;
-+ i = 0x00;
- break;
- case 4 :
-- i = 0xfff0;
-+ i = 0x0000;
- break;
- case 8 :
-- i = 0xffffff00;
-+ i = 0x00000000;
- break;
- #ifdef GX_COLOR_INDEX_TYPE
- case 16 :
-- i = 0xffffffffffff0000;
-+ i = 0x0000000000000000;
- break;
- #endif /* GX_COLOR_INDEX_TYPE */
- }
-@@ -2929,7 +2940,10 @@ cups_put_params(gx_device *pdev, /*
- int xflip = 0,
- yflip = 0;
- int found = 0;
--
-+ gs_param_string icc_pro_dummy;
-+ int old_cmps = cups->color_info.num_components;
-+ int old_depth = cups->color_info.depth;
-+
- #ifdef DEBUG
- dprintf2("DEBUG2: cups_put_params(%p, %p)\n", pdev, plist);
- #endif /* DEBUG */
-@@ -3024,6 +3038,11 @@ cups_put_params(gx_device *pdev, /*
- margins_set = param_read_float_array(plist, "Margins", &arrayval) == 0;
- color_set = param_read_int(plist, "cupsColorSpace", &intval) == 0 ||
- param_read_int(plist, "cupsBitsPerColor", &intval) == 0;
-+
-+ if (!cups->user_icc) {
-+ cups->user_icc = param_read_string(plist, "OutputICCProfile", &icc_pro_dummy) == 0;
-+ }
-+
- /* We set the old dimensions to 1 if we have a color depth change, so
- that memory reallocation gets forced. This is perhaps not the correct
- approach to prevent crashes like in bug 690435. We keep it for the
-@@ -3134,12 +3153,20 @@ cups_put_params(gx_device *pdev, /*
- if ((code = gdev_prn_put_params(pdev, plist)) < 0)
- return (code);
-
-+ /* If cups_set_color_info() changed the color model of the device we want to
-+ * force the raster memory to be recreated/reinitialized
-+ */
-+ if (cups->color_info.num_components != old_cmps || cups->color_info.depth != old_depth) {
-+ width_old = 0;
-+ height_old = 0;
-+ }
-+ else {
- /* pdev->width/height may have been changed by the call to
- * gdev_prn_put_params()
- */
-- width_old = pdev->width;
-- height_old = pdev->height;
--
-+ width_old = pdev->width;
-+ height_old = pdev->height;
-+ }
- /*
- * Update margins/sizes as needed...
- */
-@@ -4044,22 +4071,88 @@ cups_set_color_info(gx_device *pdev) /*
- for (k = 0; k <= CUPS_MAX_VALUE; k ++)
- cups->Density[k] = k;
- }
-- /* Set up the ICC profile for ghostscript to use based upon the color space.
-- This is different than the PPD profile above which appears to be some sort
-- of matrix based TRC profile */
-- switch (cups->header.cupsColorSpace) {
-- /* Use RGB profile for this */
-- case CUPS_CSPACE_RGBW:
-- if (pdev->icc_struct == NULL) {
-- pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
-- }
-- if (pdev->icc_struct->device_profile[gsDEFAULTPROFILE] == NULL) {
-- code = gsicc_set_device_profile(pdev, pdev->memory,
-- DEFAULT_RGB_ICC, gsDEFAULTPROFILE);
-- }
-- break;
-- default:
-- break;
-+ if (!cups->user_icc) {
-+ /* Set up the ICC profile for ghostscript to use based upon the color space.
-+ This is different than the PPD profile above which appears to be some sort
-+ of matrix based TRC profile */
-+ switch (cups->header.cupsColorSpace)
-+ {
-+ default :
-+ case CUPS_CSPACE_RGBW :
-+ case CUPS_CSPACE_RGB :
-+ case CUPS_CSPACE_RGBA :
-+ case CUPS_CSPACE_CMY :
-+ case CUPS_CSPACE_YMC :
-+# ifdef CUPS_RASTER_HAVE_COLORIMETRIC
-+ case CUPS_CSPACE_CIELab :
-+ case CUPS_CSPACE_ICC1 :
-+ case CUPS_CSPACE_ICC2 :
-+ case CUPS_CSPACE_ICC3 :
-+ case CUPS_CSPACE_ICC4 :
-+ case CUPS_CSPACE_ICC5 :
-+ case CUPS_CSPACE_ICC6 :
-+ case CUPS_CSPACE_ICC7 :
-+ case CUPS_CSPACE_ICC8 :
-+ case CUPS_CSPACE_ICC9 :
-+ case CUPS_CSPACE_ICCA :
-+ case CUPS_CSPACE_ICCB :
-+ case CUPS_CSPACE_ICCC :
-+ case CUPS_CSPACE_ICCD :
-+ case CUPS_CSPACE_ICCE :
-+ case CUPS_CSPACE_ICCF :
-+# endif /* CUPS_RASTER_HAVE_COLORIMETRIC */
-+ if (!pdev->icc_struct || (pdev->icc_struct &&
-+ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsRGB)) {
-+
-+ if (pdev->icc_struct) {
-+ rc_decrement(pdev->icc_struct, "cups_set_color_info");
-+ }
-+ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
-+
-+ code = gsicc_set_device_profile(pdev, pdev->memory,
-+ (char *)DEFAULT_RGB_ICC, gsDEFAULTPROFILE);
-+ }
-+ break;
-+
-+ case CUPS_CSPACE_W :
-+ case CUPS_CSPACE_WHITE :
-+ case CUPS_CSPACE_K :
-+ case CUPS_CSPACE_GOLD :
-+ case CUPS_CSPACE_SILVER :
-+ if (!pdev->icc_struct || (pdev->icc_struct &&
-+ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsGRAY)) {
-+
-+ if (pdev->icc_struct) {
-+ rc_decrement(pdev->icc_struct, "cups_set_color_info");
-+ }
-+ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
-+
-+ code = gsicc_set_device_profile(pdev, pdev->memory->non_gc_memory,
-+ (char *)DEFAULT_GRAY_ICC, gsDEFAULTPROFILE);
-+ }
-+ break;
-+ case CUPS_CSPACE_KCMYcm :
-+# ifdef CUPS_RASTER_HAVE_COLORIMETRIC
-+ case CUPS_CSPACE_CIEXYZ :
-+#endif
-+ case CUPS_CSPACE_CMYK :
-+ case CUPS_CSPACE_YMCK :
-+ case CUPS_CSPACE_KCMY :
-+ case CUPS_CSPACE_GMCK :
-+ case CUPS_CSPACE_GMCS :
-+ if (!pdev->icc_struct || (pdev->icc_struct &&
-+ pdev->icc_struct->device_profile[gsDEFAULTPROFILE]->data_cs != gsCMYK)) {
-+
-+ if (pdev->icc_struct) {
-+ rc_decrement(pdev->icc_struct, "cups_set_color_info");
-+ }
-+ pdev->icc_struct = gsicc_new_device_profile_array(pdev->memory);
-+
-+ code = gsicc_set_device_profile(pdev, pdev->memory,
-+ (char *)DEFAULT_CMYK_ICC, gsDEFAULTPROFILE);
-+ }
-+ break;
-+ }
- }
- }
-
diff --git a/libre/ghostscript-libre/ghostscript-gpl-9.04-freetype-underlinking.patch b/libre/ghostscript-libre/ghostscript-gpl-9.04-freetype-underlinking.patch
deleted file mode 100644
index 1a81863be..000000000
--- a/libre/ghostscript-libre/ghostscript-gpl-9.04-freetype-underlinking.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur ghostscript-9.04/base/Makefile.in ghostscript-9.04.new/base/Makefile.in
---- ghostscript-9.04/base/Makefile.in 2011-08-05 13:12:20.000000000 +0200
-+++ ghostscript-9.04.new/base/Makefile.in 2011-08-16 16:06:50.487377337 +0200
-@@ -375,7 +375,7 @@
- # Solaris may need -lnsl -lsocket -lposix4.
- # (Libraries required by individual drivers are handled automatically.)
-
--EXTRALIBS=@LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@
-+EXTRALIBS=@LIBS@ @DYNAMIC_LIBS@ @FONTCONFIG_LIBS@ @FT_LIBS@
-
- # Define the standard libraries to search at the end of linking.
- # Most platforms require -lpthread for the POSIX threads library;
diff --git a/libre/ghostscript-libre/gs_bug691759and691760.diff b/libre/ghostscript-libre/gs_bug691759and691760.diff
deleted file mode 100644
index ca394427a..000000000
--- a/libre/ghostscript-libre/gs_bug691759and691760.diff
+++ /dev/null
@@ -1,215 +0,0 @@
-Modified: trunk/gs/base/gdevnfwd.c
-===================================================================
---- trunk/gs/base/gdevnfwd.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gdevnfwd.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -1117,3 +1117,29 @@
- {
- return 0;
- }
-+
-+bool
-+fwd_uses_fwd_cmap_procs(gx_device * dev)
-+{
-+ const gx_cm_color_map_procs *pprocs;
-+
-+ pprocs = dev_proc(dev, get_color_mapping_procs)(dev);
-+ if (pprocs == &FwdDevice_cm_map_procs) {
-+ return true;
-+ }
-+ return false;
-+}
-+
-+const gx_cm_color_map_procs*
-+fwd_get_target_cmap_procs(gx_device * dev)
-+{
-+ const gx_cm_color_map_procs *pprocs;
-+ gx_device_forward * const fdev = (gx_device_forward *)dev;
-+ gx_device * const tdev = fdev->target;
-+
-+ pprocs = dev_proc(tdev, get_color_mapping_procs(tdev));
-+ while (pprocs == &FwdDevice_cm_map_procs) {
-+ pprocs = fwd_get_target_cmap_procs(tdev);
-+ }
-+ return pprocs;
-+}
-\ No newline at end of file
-
-Modified: trunk/gs/base/gdevp14.c
-===================================================================
---- trunk/gs/base/gdevp14.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gdevp14.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -900,7 +900,11 @@
- nos->parent_color_info_procs->num_components, 1,
- false, false, true, tos->planestride,
- tos->rowstride, num_rows, num_cols);
-- /* Transform the data */
-+ /* Transform the data. Since the pdf14 device should be
-+ using RGB, CMYK or Gray buffers, this transform
-+ does not need to worry about the cmap procs of
-+ the target device. Those are handled when we do
-+ the pdf14 put image operation */
- gscms_transform_color_buffer(icc_link, &input_buff_desc,
- &output_buff_desc, tos->data,
- new_data_buf);
-
-Modified: trunk/gs/base/gxcmap.c
-===================================================================
---- trunk/gs/base/gxcmap.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gxcmap.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -31,6 +31,7 @@
- #include "gsicc_manage.h"
- #include "gdevdevn.h"
- #include "gsicc_cache.h"
-+#include "gscms.h"
-
- /* Structure descriptor */
- public_st_device_color();
-@@ -1744,3 +1745,37 @@
-
- }
- }
-+
-+bool
-+gx_device_uses_std_cmap_procs(gx_device * dev)
-+{
-+ const gx_cm_color_map_procs *pprocs;
-+
-+ if (dev->device_icc_profile != NULL) {
-+ pprocs = dev_proc(dev, get_color_mapping_procs)(dev);
-+ /* Check if they are forwarding procs */
-+ if (fwd_uses_fwd_cmap_procs(dev)) {
-+ pprocs = fwd_get_target_cmap_procs(dev);
-+ }
-+ switch(dev->device_icc_profile->data_cs) {
-+ case gsGRAY:
-+ if (pprocs == &DeviceGray_procs) {
-+ return true;
-+ }
-+ break;
-+ case gsRGB:
-+ if (pprocs == &DeviceRGB_procs) {
-+ return true;
-+ }
-+ break;
-+ case gsCMYK:
-+ if (pprocs == &DeviceCMYK_procs) {
-+ return true;
-+ }
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ return false;
-+}
-
-Modified: trunk/gs/base/gxcmap.h
-===================================================================
---- trunk/gs/base/gxcmap.h 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gxcmap.h 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -284,5 +284,11 @@
- * [0,1]
- */
- frac gx_unit_frac(float fvalue);
-+/* Determine if the device is using the standard color mapping procs. In
-+ such a case, we can make use of the faster icc color conversions for
-+ images */
-+bool gx_device_uses_std_cmap_procs(gx_device * dev);
-+bool fwd_uses_fwd_cmap_procs(gx_device * dev);
-+const gx_cm_color_map_procs* fwd_get_target_cmap_procs(gx_device * dev);
-
- #endif /* gxcmap_INCLUDED */
-
-Modified: trunk/gs/base/gxi12bit.c
-===================================================================
---- trunk/gs/base/gxi12bit.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gxi12bit.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -113,6 +113,8 @@
- irender_proc_t
- gs_image_class_2_fracs(gx_image_enum * penum)
- {
-+ bool std_cmap_procs;
-+
- if (penum->bps > 8) {
- if (penum->use_mask_color) {
- /* Convert color mask values to fracs. */
-@@ -122,9 +124,14 @@
- penum->mask_color.values[i] =
- bits2frac(penum->mask_color.values[i], 12);
- }
-+ /* If the device has some unique color mapping procs due to its color space,
-+ then we will need to use those and go through pixel by pixel instead
-+ of blasting through buffers. This is true for example with many of
-+ the color spaces for CUPs */
-+ std_cmap_procs = gx_device_uses_std_cmap_procs(penum->dev);
- if ( (gs_color_space_get_index(penum->pcs) == gs_color_space_index_DeviceN &&
- penum->pcs->cmm_icc_profile_data == NULL) || penum->use_mask_color ||
-- penum->bps != 16 ||
-+ penum->bps != 16 || !std_cmap_procs ||
- gs_color_space_get_index(penum->pcs) == gs_color_space_index_DevicePixel) {
- /* DevicePixel color space used in mask from 3x type. Basically
- a simple color space that just is scaled to the device bit
-
-Modified: trunk/gs/base/gxicolor.c
-===================================================================
---- trunk/gs/base/gxicolor.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gxicolor.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -97,6 +97,8 @@
- irender_proc_t
- gs_image_class_4_color(gx_image_enum * penum)
- {
-+ bool std_cmap_procs;
-+
- if (penum->use_mask_color) {
- /*
- * Scale the mask colors to match the scaling of each sample to
-@@ -128,8 +130,14 @@
- penum->mask_color.mask = 0;
- penum->mask_color.test = ~0;
- }
-+ /* If the device has some unique color mapping procs due to its color space,
-+ then we will need to use those and go through pixel by pixel instead
-+ of blasting through buffers. This is true for example with many of
-+ the color spaces for CUPs */
-+ std_cmap_procs = gx_device_uses_std_cmap_procs(penum->dev);
- if ( (gs_color_space_get_index(penum->pcs) == gs_color_space_index_DeviceN &&
-- penum->pcs->cmm_icc_profile_data == NULL) || penum->use_mask_color ) {
-+ penum->pcs->cmm_icc_profile_data == NULL) || penum->use_mask_color ||
-+ !std_cmap_procs) {
- return &image_render_color_DeviceN;
- } else {
- /* Set up the link now */
-
-Modified: trunk/gs/base/gxiscale.c
-===================================================================
---- trunk/gs/base/gxiscale.c 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/gxiscale.c 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -104,6 +104,13 @@
- != penum->dev->color_info.num_components) {
- use_icc = false;
- }
-+ /* If the device has some unique color mapping procs due to its color space,
-+ then we will need to use those and go through pixel by pixel instead
-+ of blasting through buffers. This is true for example with many of
-+ the color spaces for CUPs */
-+ if(!gx_device_uses_std_cmap_procs(penum->dev)) {
-+ use_icc = false;
-+ }
- /*
- * USE_CONSERVATIVE_INTERPOLATION_RULES is normally NOT defined since
- * the MITCHELL digital filter seems OK as long as we are going out to
-
-Modified: trunk/gs/base/lib.mak
-===================================================================
---- trunk/gs/base/lib.mak 2011-01-06 23:48:14 UTC (rev 12004)
-+++ trunk/gs/base/lib.mak 2011-01-07 04:49:42 UTC (rev 12005)
-@@ -602,7 +602,7 @@
- $(gxalpha_h) $(gxcspace_h) $(gxfarith_h) $(gxfrac_h)\
- $(gxdcconv_h) $(gxdevice_h) $(gxcmap_h) $(gsnamecl_h) $(gxlum_h)\
- $(gzstate_h) $(gxdither_h) $(gxcdevn_h) $(string__h)\
-- $(gsicc_manage_h) $(gdevdevn_h) $(gsicc_cache_h)
-+ $(gsicc_manage_h) $(gdevdevn_h) $(gsicc_cache_h) $(gscms_h)
- $(GLCC) $(GLO_)gxcmap.$(OBJ) $(C_) $(GLSRC)gxcmap.c
-
- $(GLOBJ)gxcpath.$(OBJ) : $(GLSRC)gxcpath.c $(GXERR)\
-
diff --git a/libre/kdenetwork-libre/PKGBUILD b/libre/kdenetwork-libre/PKGBUILD
deleted file mode 100644
index 6e231389d..000000000
--- a/libre/kdenetwork-libre/PKGBUILD
+++ /dev/null
@@ -1,121 +0,0 @@
-# $Id: PKGBUILD 154726 2012-03-30 16:15:21Z andrea $
-# Maintainer: Andrea Scarpino <andrea@archlinux.org>
-# Contributor: Pierre Schmitz <pierre@archlinux.de>
-# Maintainer (Parabola): André Silva <andre.paulista@adinet.com.uy>
-
-_pkgbase=kdenetwork
-pkgbase=kdenetwork-libre
-pkgname=('kdenetwork-filesharing'
- 'kdenetwork-kdnssd'
- 'kdenetwork-kget'
- 'kdenetwork-kopete-libre'
- 'kdenetwork-kppp'
- 'kdenetwork-krdc'
- 'kdenetwork-krfb')
-pkgver=4.8.2
-pkgrel=1
-arch=('i686' 'x86_64')
-url='http://www.kde.org'
-license=('GPL' 'LGPL' 'FDL')
-groups=('kde' 'kdenetwork')
-makedepends=('cmake' 'automoc4' 'boost' 'speex' 'ortp' 'libotr' 'ppp'
- 'qca-ossl' 'kdebase-workspace' 'kdebase-lib' 'libvncserver' 'libmsn'
- 'v4l-utils' 'libidn' 'rdesktop' 'qimageblitz' 'libxdamage' 'libgadu'
- 'libktorrent' 'libmms' 'mediastreamer')
-source=("http://download.kde.org/stable/${pkgver}/src/${_pkgbase}-${pkgver}.tar.xz")
-sha1sums=('a899a9ef1637612a5ec14bb3ff950f3ed565d60e')
-
-build() {
- cd "${srcdir}"
-
-# Based on http://bzr.trisquel.info/package-helpers/trunk/annotate/head%3A/helpers/natty/make-kdenetwork, revision 34.
- sed -i 's/Skype protocol" ON/Skype protocol" OFF/g' "${_pkgbase}-${pkgver}/kopete/protocols/CMakeLists.txt"
- rm -rf "${_pkgbase}-${pkgver}/kopete/protocols/skype"
- sed 's/, Skype//' -i "${_pkgbase}-${pkgver}/doc/kopete/index.docbook"
-
- mkdir build
- cd build
- cmake ../${_pkgbase}-${pkgver} \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_SKIP_RPATH=ON \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DMOZPLUGIN_INSTALL_DIR=/usr/lib/mozilla/plugins/ \
- -DWITH_Xmms=OFF \
- -DWITH_LibMeanwhile=OFF
- make
-}
-
-package_kdenetwork-filesharing() {
- pkgdesc='Konqueror properties dialog plugin to share a directory with the local network'
- depends=('kdelibs' 'smbclient')
- install='kdenetwork.install'
- cd $srcdir/build/filesharing
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-kdnssd() {
- pkgdesc='Monitors the network for DNS-SD services'
- depends=('kdelibs')
- cd $srcdir/build/kdnssd
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-kget() {
- pkgdesc='Download Manager'
- depends=('kdebase-workspace' 'kdebase-lib' 'libktorrent' 'libmms')
- url="http://kde.org/applications/internet/kget/"
- install='kdenetwork-kget.install'
- cd $srcdir/build/kget
- make DESTDIR=$pkgdir install
- cd $srcdir/build/doc/kget
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-kopete-libre() {
- pkgdesc='Instant Messenger (without skype support)'
- depends=('kdebase-runtime' 'kdepimlibs' 'qca-ossl' 'libotr' 'libmsn'
- 'libidn' 'qimageblitz' 'libgadu' 'mediastreamer')
- conflicts=('kdenetwork-kopete')
- provides=("kdenetwork-kopete=${pkgver}")
- replaces=('kdenetwork-kopete')
- url="http://kde.org/applications/internet/kopete/"
- install='kdenetwork-kopete.install'
- cd $srcdir/build/kopete
- make DESTDIR=$pkgdir install
- cd $srcdir/build/doc/kopete
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-kppp() {
- pkgdesc='Internet Dial-Up Tool'
- depends=('kdebase-runtime' 'ppp')
- url="http://kde.org/applications/internet/kppp/"
- install='kdenetwork-kppp.install'
- cd $srcdir/build/kppp
- make DESTDIR=$pkgdir install
- cd $srcdir/build/doc/kppp
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-krdc() {
- pkgdesc='Remote Desktop Client'
- depends=('kdebase-runtime' 'libvncserver' 'rdesktop')
- optdepends=('kdebase-keditbookmarks: to edit bookmarks')
- url="http://kde.org/applications/internet/krdc/"
- cd $srcdir/build/krdc
- make DESTDIR=$pkgdir install
- cd $srcdir/build/doc/krdc
- make DESTDIR=$pkgdir install
-}
-
-package_kdenetwork-krfb() {
- pkgdesc='Desktop Sharing'
- # note on libxdamage:
- # not detected by namcap because libgl depends on it
- # but nvidia providing libgl does not depend on libxdamage
- depends=('kdebase-runtime' 'libvncserver' 'libxdamage')
- cd $srcdir/build/krfb
- make DESTDIR=$pkgdir install
- cd $srcdir/build/doc/krfb
- make DESTDIR=$pkgdir install
-}
diff --git a/libre/kdenetwork-libre/kdenetwork-kget.install b/libre/kdenetwork-libre/kdenetwork-kget.install
deleted file mode 100644
index 5495fb1b5..000000000
--- a/libre/kdenetwork-libre/kdenetwork-kget.install
+++ /dev/null
@@ -1,12 +0,0 @@
-post_install() {
- xdg-icon-resource forceupdate --theme hicolor &> /dev/null
- update-desktop-database -q
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre/kdenetwork-libre/kdenetwork-kopete.install b/libre/kdenetwork-libre/kdenetwork-kopete.install
deleted file mode 100644
index 5495fb1b5..000000000
--- a/libre/kdenetwork-libre/kdenetwork-kopete.install
+++ /dev/null
@@ -1,12 +0,0 @@
-post_install() {
- xdg-icon-resource forceupdate --theme hicolor &> /dev/null
- update-desktop-database -q
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre/kdenetwork-libre/kdenetwork-kppp.install b/libre/kdenetwork-libre/kdenetwork-kppp.install
deleted file mode 100644
index 5495fb1b5..000000000
--- a/libre/kdenetwork-libre/kdenetwork-kppp.install
+++ /dev/null
@@ -1,12 +0,0 @@
-post_install() {
- xdg-icon-resource forceupdate --theme hicolor &> /dev/null
- update-desktop-database -q
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre/kdenetwork-libre/kdenetwork.install b/libre/kdenetwork-libre/kdenetwork.install
deleted file mode 100644
index e70c054ec..000000000
--- a/libre/kdenetwork-libre/kdenetwork.install
+++ /dev/null
@@ -1,11 +0,0 @@
-post_install() {
- xdg-icon-resource forceupdate --theme hicolor &> /dev/null
-}
-
-post_upgrade() {
- post_install
-}
-
-post_remove() {
- post_install
-}
diff --git a/libre/linux-libre-lts/CVE-2012-0056.patch b/libre/linux-libre-lts/CVE-2012-0056.patch
deleted file mode 100644
index 4098f3506..000000000
--- a/libre/linux-libre-lts/CVE-2012-0056.patch
+++ /dev/null
@@ -1,269 +0,0 @@
-From e268337dfe26dfc7efd422a804dbb27977a3cccc Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Tue, 17 Jan 2012 15:21:19 -0800
-Subject: proc: clean up and fix /proc/<pid>/mem handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-From: Linus Torvalds <torvalds@linux-foundation.org>
-
-commit e268337dfe26dfc7efd422a804dbb27977a3cccc upstream.
-
-Jüri Aedla reported that the /proc/<pid>/mem handling really isn't very
-robust, and it also doesn't match the permission checking of any of the
-other related files.
-
-This changes it to do the permission checks at open time, and instead of
-tracking the process, it tracks the VM at the time of the open. That
-simplifies the code a lot, but does mean that if you hold the file
-descriptor open over an execve(), you'll continue to read from the _old_
-VM.
-
-That is different from our previous behavior, but much simpler. If
-somebody actually finds a load where this matters, we'll need to revert
-this commit.
-
-I suspect that nobody will ever notice - because the process mapping
-addresses will also have changed as part of the execve. So you cannot
-actually usefully access the fd across a VM change simply because all
-the offsets for IO would have changed too.
-
-Reported-by: Jüri Aedla <asd@ut.ee>
-Cc: Al Viro <viro@zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- fs/proc/base.c | 145 +++++++++++++++------------------------------------------
- 1 file changed, 39 insertions(+), 106 deletions(-)
-
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -194,65 +194,7 @@ static int proc_root_link(struct inode *
- return result;
- }
-
--static struct mm_struct *__check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
--
-- mm = get_task_mm(task);
-- if (!mm)
-- return ERR_PTR(-EINVAL);
--
-- /*
-- * A task can always look at itself, in case it chooses
-- * to use system calls instead of load instructions.
-- */
-- if (task == current)
-- return mm;
--
-- /*
-- * If current is actively ptrace'ing, and would also be
-- * permitted to freshly attach with ptrace now, permit it.
-- */
-- if (task_is_stopped_or_traced(task)) {
-- int match;
-- rcu_read_lock();
-- match = (tracehook_tracer_task(task) == current);
-- rcu_read_unlock();
-- if (match && ptrace_may_access(task, PTRACE_MODE_ATTACH))
-- return mm;
-- }
--
-- /*
-- * No one else is allowed.
-- */
-- mmput(mm);
-- return ERR_PTR(-EPERM);
--}
--
--/*
-- * If current may access user memory in @task return a reference to the
-- * corresponding mm, otherwise ERR_PTR.
-- */
--static struct mm_struct *check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
-- int err;
--
-- /*
-- * Avoid racing if task exec's as we might get a new mm but validate
-- * against old credentials.
-- */
-- err = mutex_lock_killable(&task->signal->cred_guard_mutex);
-- if (err)
-- return ERR_PTR(err);
--
-- mm = __check_mem_permission(task);
-- mutex_unlock(&task->signal->cred_guard_mutex);
--
-- return mm;
--}
--
--struct mm_struct *mm_for_maps(struct task_struct *task)
-+static struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
- {
- struct mm_struct *mm;
- int err;
-@@ -263,7 +205,7 @@ struct mm_struct *mm_for_maps(struct tas
-
- mm = get_task_mm(task);
- if (mm && mm != current->mm &&
-- !ptrace_may_access(task, PTRACE_MODE_READ)) {
-+ !ptrace_may_access(task, mode)) {
- mmput(mm);
- mm = ERR_PTR(-EACCES);
- }
-@@ -272,6 +214,11 @@ struct mm_struct *mm_for_maps(struct tas
- return mm;
- }
-
-+struct mm_struct *mm_for_maps(struct task_struct *task)
-+{
-+ return mm_access(task, PTRACE_MODE_READ);
-+}
-+
- static int proc_pid_cmdline(struct task_struct *task, char * buffer)
- {
- int res = 0;
-@@ -816,38 +763,39 @@ static const struct file_operations proc
-
- static int mem_open(struct inode* inode, struct file* file)
- {
-- file->private_data = (void*)((long)current->self_exec_id);
-+ struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ struct mm_struct *mm;
-+
-+ if (!task)
-+ return -ESRCH;
-+
-+ mm = mm_access(task, PTRACE_MODE_ATTACH);
-+ put_task_struct(task);
-+
-+ if (IS_ERR(mm))
-+ return PTR_ERR(mm);
-+
- /* OK to pass negative loff_t, we can catch out-of-range */
- file->f_mode |= FMODE_UNSIGNED_OFFSET;
-+ file->private_data = mm;
-+
- return 0;
- }
-
- static ssize_t mem_read(struct file * file, char __user * buf,
- size_t count, loff_t *ppos)
- {
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ int ret;
- char *page;
- unsigned long src = *ppos;
-- int ret = -ESRCH;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- ret = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out;
--
-- mm = check_mem_permission(task);
-- ret = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- ret = -EIO;
--
-- if (file->private_data != (void*)((long)current->self_exec_id))
-- goto out_put;
-+ return -ENOMEM;
-
- ret = 0;
-
-@@ -874,13 +822,7 @@ static ssize_t mem_read(struct file * fi
- }
- *ppos = src;
-
--out_put:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out:
-- put_task_struct(task);
--out_no_task:
- return ret;
- }
-
-@@ -889,27 +831,15 @@ static ssize_t mem_write(struct file * f
- {
- int copied;
- char *page;
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
- unsigned long dst = *ppos;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- copied = -ESRCH;
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- copied = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out_task;
--
-- mm = check_mem_permission(task);
-- copied = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- copied = -EIO;
-- if (file->private_data != (void *)((long)current->self_exec_id))
-- goto out_mm;
-+ return -ENOMEM;
-
- copied = 0;
- while (count > 0) {
-@@ -933,13 +863,7 @@ static ssize_t mem_write(struct file * f
- }
- *ppos = dst;
-
--out_mm:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out_task:
-- put_task_struct(task);
--out_no_task:
- return copied;
- }
-
-@@ -959,11 +883,20 @@ loff_t mem_lseek(struct file *file, loff
- return file->f_pos;
- }
-
-+static int mem_release(struct inode *inode, struct file *file)
-+{
-+ struct mm_struct *mm = file->private_data;
-+
-+ mmput(mm);
-+ return 0;
-+}
-+
- static const struct file_operations proc_mem_operations = {
- .llseek = mem_lseek,
- .read = mem_read,
- .write = mem_write,
- .open = mem_open,
-+ .release = mem_release,
- };
-
- static ssize_t environ_read(struct file *file, char __user *buf,
diff --git a/libre/linux-libre/CVE-2012-0056.patch b/libre/linux-libre/CVE-2012-0056.patch
deleted file mode 100644
index 6a83fef1c..000000000
--- a/libre/linux-libre/CVE-2012-0056.patch
+++ /dev/null
@@ -1,268 +0,0 @@
-From e268337dfe26dfc7efd422a804dbb27977a3cccc Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds@linux-foundation.org>
-Date: Tue, 17 Jan 2012 15:21:19 -0800
-Subject: [PATCH] proc: clean up and fix /proc/<pid>/mem handling
-MIME-Version: 1.0
-Content-Type: text/plain; charset=utf8
-Content-Transfer-Encoding: 8bit
-
-Jüri Aedla reported that the /proc/<pid>/mem handling really isn't very
-robust, and it also doesn't match the permission checking of any of the
-other related files.
-
-This changes it to do the permission checks at open time, and instead of
-tracking the process, it tracks the VM at the time of the open. That
-simplifies the code a lot, but does mean that if you hold the file
-descriptor open over an execve(), you'll continue to read from the _old_
-VM.
-
-That is different from our previous behavior, but much simpler. If
-somebody actually finds a load where this matters, we'll need to revert
-this commit.
-
-I suspect that nobody will ever notice - because the process mapping
-addresses will also have changed as part of the execve. So you cannot
-actually usefully access the fd across a VM change simply because all
-the offsets for IO would have changed too.
-
-Reported-by: Jüri Aedla <asd@ut.ee>
-Cc: Al Viro <viro@zeniv.linux.org.uk>
-Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
----
- fs/proc/base.c | 145 +++++++++++++++-----------------------------------------
- 1 files changed, 39 insertions(+), 106 deletions(-)
-
-diff --git a/fs/proc/base.c b/fs/proc/base.c
-index 5485a53..662ddf2 100644
---- a/fs/proc/base.c
-+++ b/fs/proc/base.c
-@@ -198,65 +198,7 @@ static int proc_root_link(struct dentry *dentry, struct path *path)
- return result;
- }
-
--static struct mm_struct *__check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
--
-- mm = get_task_mm(task);
-- if (!mm)
-- return ERR_PTR(-EINVAL);
--
-- /*
-- * A task can always look at itself, in case it chooses
-- * to use system calls instead of load instructions.
-- */
-- if (task == current)
-- return mm;
--
-- /*
-- * If current is actively ptrace'ing, and would also be
-- * permitted to freshly attach with ptrace now, permit it.
-- */
-- if (task_is_stopped_or_traced(task)) {
-- int match;
-- rcu_read_lock();
-- match = (ptrace_parent(task) == current);
-- rcu_read_unlock();
-- if (match && ptrace_may_access(task, PTRACE_MODE_ATTACH))
-- return mm;
-- }
--
-- /*
-- * No one else is allowed.
-- */
-- mmput(mm);
-- return ERR_PTR(-EPERM);
--}
--
--/*
-- * If current may access user memory in @task return a reference to the
-- * corresponding mm, otherwise ERR_PTR.
-- */
--static struct mm_struct *check_mem_permission(struct task_struct *task)
--{
-- struct mm_struct *mm;
-- int err;
--
-- /*
-- * Avoid racing if task exec's as we might get a new mm but validate
-- * against old credentials.
-- */
-- err = mutex_lock_killable(&task->signal->cred_guard_mutex);
-- if (err)
-- return ERR_PTR(err);
--
-- mm = __check_mem_permission(task);
-- mutex_unlock(&task->signal->cred_guard_mutex);
--
-- return mm;
--}
--
--struct mm_struct *mm_for_maps(struct task_struct *task)
-+static struct mm_struct *mm_access(struct task_struct *task, unsigned int mode)
- {
- struct mm_struct *mm;
- int err;
-@@ -267,7 +209,7 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
-
- mm = get_task_mm(task);
- if (mm && mm != current->mm &&
-- !ptrace_may_access(task, PTRACE_MODE_READ)) {
-+ !ptrace_may_access(task, mode)) {
- mmput(mm);
- mm = ERR_PTR(-EACCES);
- }
-@@ -276,6 +218,11 @@ struct mm_struct *mm_for_maps(struct task_struct *task)
- return mm;
- }
-
-+struct mm_struct *mm_for_maps(struct task_struct *task)
-+{
-+ return mm_access(task, PTRACE_MODE_READ);
-+}
-+
- static int proc_pid_cmdline(struct task_struct *task, char * buffer)
- {
- int res = 0;
-@@ -752,38 +699,39 @@ static const struct file_operations proc_single_file_operations = {
-
- static int mem_open(struct inode* inode, struct file* file)
- {
-- file->private_data = (void*)((long)current->self_exec_id);
-+ struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ struct mm_struct *mm;
-+
-+ if (!task)
-+ return -ESRCH;
-+
-+ mm = mm_access(task, PTRACE_MODE_ATTACH);
-+ put_task_struct(task);
-+
-+ if (IS_ERR(mm))
-+ return PTR_ERR(mm);
-+
- /* OK to pass negative loff_t, we can catch out-of-range */
- file->f_mode |= FMODE_UNSIGNED_OFFSET;
-+ file->private_data = mm;
-+
- return 0;
- }
-
- static ssize_t mem_read(struct file * file, char __user * buf,
- size_t count, loff_t *ppos)
- {
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
-+ int ret;
- char *page;
- unsigned long src = *ppos;
-- int ret = -ESRCH;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- ret = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out;
--
-- mm = check_mem_permission(task);
-- ret = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- ret = -EIO;
--
-- if (file->private_data != (void*)((long)current->self_exec_id))
-- goto out_put;
-+ return -ENOMEM;
-
- ret = 0;
-
-@@ -810,13 +758,7 @@ static ssize_t mem_read(struct file * file, char __user * buf,
- }
- *ppos = src;
-
--out_put:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out:
-- put_task_struct(task);
--out_no_task:
- return ret;
- }
-
-@@ -825,27 +767,15 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- {
- int copied;
- char *page;
-- struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
- unsigned long dst = *ppos;
-- struct mm_struct *mm;
-+ struct mm_struct *mm = file->private_data;
-
-- copied = -ESRCH;
-- if (!task)
-- goto out_no_task;
-+ if (!mm)
-+ return 0;
-
-- copied = -ENOMEM;
- page = (char *)__get_free_page(GFP_TEMPORARY);
- if (!page)
-- goto out_task;
--
-- mm = check_mem_permission(task);
-- copied = PTR_ERR(mm);
-- if (IS_ERR(mm))
-- goto out_free;
--
-- copied = -EIO;
-- if (file->private_data != (void *)((long)current->self_exec_id))
-- goto out_mm;
-+ return -ENOMEM;
-
- copied = 0;
- while (count > 0) {
-@@ -869,13 +799,7 @@ static ssize_t mem_write(struct file * file, const char __user *buf,
- }
- *ppos = dst;
-
--out_mm:
-- mmput(mm);
--out_free:
- free_page((unsigned long) page);
--out_task:
-- put_task_struct(task);
--out_no_task:
- return copied;
- }
-
-@@ -895,11 +819,20 @@ loff_t mem_lseek(struct file *file, loff_t offset, int orig)
- return file->f_pos;
- }
-
-+static int mem_release(struct inode *inode, struct file *file)
-+{
-+ struct mm_struct *mm = file->private_data;
-+
-+ mmput(mm);
-+ return 0;
-+}
-+
- static const struct file_operations proc_mem_operations = {
- .llseek = mem_lseek,
- .read = mem_read,
- .write = mem_write,
- .open = mem_open,
-+ .release = mem_release,
- };
-
- static ssize_t environ_read(struct file *file, char __user *buf,
---
-1.7.6.5
-
diff --git a/libre/linux-libre/dib0700-fix.patch b/libre/linux-libre/dib0700-fix.patch
deleted file mode 100644
index 48f07e6fd..000000000
--- a/libre/linux-libre/dib0700-fix.patch
+++ /dev/null
@@ -1,1487 +0,0 @@
-commit 198c545cd7306dc90aaae1d61e64175e70a70dc8
-Author: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
-Date: Wed Aug 3 17:08:21 2011 +0200
-
- [media] DiBcom: protect the I2C bufer access
-
- This patch protect the I2C buffer access in order to manage concurrent
- access. This protection is done using mutex.
- Furthermore, for the dib9000, if a pid filtering command is
- received during the tuning, this pid filtering command is delayed to
- avoid any concurrent access issue.
-
- Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
- Cc: Florian Mickler <florian@mickler.org>
- Cc: stable@kernel.org
-
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
- Signed-off-by: Patrick Boettcher <Patrick.Boettcher@dibcom.fr>
-
-diff --git a/drivers/media/dvb/frontends/dib0070.c b/drivers/media/dvb/frontends/dib0070.c
-index 1d47d4d..dc1cb17 100644
---- a/drivers/media/dvb/frontends/dib0070.c
-+++ b/drivers/media/dvb/frontends/dib0070.c
-@@ -27,6 +27,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -78,10 +79,18 @@ struct dib0070_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[3];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
--static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
-+static u16 dib0070_read_reg(struct dib0070_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
-@@ -96,13 +105,23 @@ static uint16_t dib0070_read_reg(struct dib0070_state *state, u8 reg)
-
- if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
- printk(KERN_WARNING "DiB0070 I2C read failed\n");
-- return 0;
-- }
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
- state->i2c_write_buffer[0] = reg;
- state->i2c_write_buffer[1] = val >> 8;
- state->i2c_write_buffer[2] = val & 0xff;
-@@ -115,9 +134,12 @@ static int dib0070_write_reg(struct dib0070_state *state, u8 reg, u16 val)
-
- if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0070 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- #define HARD_RESET(state) do { \
-@@ -734,6 +756,7 @@ struct dvb_frontend *dib0070_attach(struct dvb_frontend *fe, struct i2c_adapter
- state->cfg = cfg;
- state->i2c = i2c;
- state->fe = fe;
-+ mutex_init(&state->i2c_buffer_lock);
- fe->tuner_priv = state;
-
- if (dib0070_reset(fe) != 0)
-diff --git a/drivers/media/dvb/frontends/dib0090.c b/drivers/media/dvb/frontends/dib0090.c
-index c9c935a..b174d1c 100644
---- a/drivers/media/dvb/frontends/dib0090.c
-+++ b/drivers/media/dvb/frontends/dib0090.c
-@@ -27,6 +27,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -196,6 +197,7 @@ struct dib0090_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[3];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- struct dib0090_fw_state {
-@@ -208,10 +210,18 @@ struct dib0090_fw_state {
- struct i2c_msg msg;
- u8 i2c_write_buffer[2];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(state->msg, 0, 2 * sizeof(struct i2c_msg));
-@@ -226,14 +236,24 @@ static u16 dib0090_read_reg(struct dib0090_state *state, u8 reg)
-
- if (i2c_transfer(state->i2c, state->msg, 2) != 2) {
- printk(KERN_WARNING "DiB0090 I2C read failed\n");
-- return 0;
-- }
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = reg & 0xff;
- state->i2c_write_buffer[1] = val >> 8;
- state->i2c_write_buffer[2] = val & 0xff;
-@@ -246,13 +266,23 @@ static int dib0090_write_reg(struct dib0090_state *state, u32 reg, u16 val)
-
- if (i2c_transfer(state->i2c, state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg;
-
- memset(&state->msg, 0, sizeof(struct i2c_msg));
-@@ -262,13 +292,24 @@ static u16 dib0090_fw_read_reg(struct dib0090_fw_state *state, u8 reg)
- state->msg.len = 2;
- if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C read failed\n");
-- return 0;
-- }
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = 0;
-+ } else
-+ ret = (state->i2c_read_buffer[0] << 8)
-+ | state->i2c_read_buffer[1];
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = val >> 8;
- state->i2c_write_buffer[1] = val & 0xff;
-
-@@ -279,9 +320,12 @@ static int dib0090_fw_write_reg(struct dib0090_fw_state *state, u8 reg, u16 val)
- state->msg.len = 2;
- if (i2c_transfer(state->i2c, &state->msg, 1) != 1) {
- printk(KERN_WARNING "DiB0090 I2C write failed\n");
-- return -EREMOTEIO;
-- }
-- return 0;
-+ ret = -EREMOTEIO;
-+ } else
-+ ret = 0;
-+
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- #define HARD_RESET(state) do { if (cfg->reset) { if (cfg->sleep) cfg->sleep(fe, 0); msleep(10); cfg->reset(fe, 1); msleep(10); cfg->reset(fe, 0); msleep(10); } } while (0)
-@@ -2440,6 +2484,7 @@ struct dvb_frontend *dib0090_register(struct dvb_frontend *fe, struct i2c_adapte
- st->config = config;
- st->i2c = i2c;
- st->fe = fe;
-+ mutex_init(&st->i2c_buffer_lock);
- fe->tuner_priv = st;
-
- if (config->wbd == NULL)
-@@ -2471,6 +2516,7 @@ struct dvb_frontend *dib0090_fw_register(struct dvb_frontend *fe, struct i2c_ada
- st->config = config;
- st->i2c = i2c;
- st->fe = fe;
-+ mutex_init(&st->i2c_buffer_lock);
- fe->tuner_priv = st;
-
- if (dib0090_fw_reset_digital(fe, st->config) != 0)
-diff --git a/drivers/media/dvb/frontends/dib7000m.c b/drivers/media/dvb/frontends/dib7000m.c
-index 79cb1c2..dbb76d7 100644
---- a/drivers/media/dvb/frontends/dib7000m.c
-+++ b/drivers/media/dvb/frontends/dib7000m.c
-@@ -11,6 +11,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_frontend.h"
-
-@@ -55,6 +56,7 @@ struct dib7000m_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib7000m_power_mode {
-@@ -69,6 +71,13 @@ enum dib7000m_power_mode {
-
- static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) | 0x80;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -85,11 +94,21 @@ static u16 dib7000m_read_word(struct dib7000m_state *state, u16 reg)
- if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d",reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -101,7 +120,10 @@ static int dib7000m_write_word(struct dib7000m_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
- static void dib7000m_write_tab(struct dib7000m_state *state, u16 *buf)
- {
-@@ -1385,6 +1407,7 @@ struct dvb_frontend * dib7000m_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- demod = &st->demod;
- demod->demodulator_priv = st;
- memcpy(&st->demod.ops, &dib7000m_ops, sizeof(struct dvb_frontend_ops));
-+ mutex_init(&st->i2c_buffer_lock);
-
- st->timf_default = cfg->bw->timf;
-
-diff --git a/drivers/media/dvb/frontends/dib7000p.c b/drivers/media/dvb/frontends/dib7000p.c
-index 0c9f40c..292bc19 100644
---- a/drivers/media/dvb/frontends/dib7000p.c
-+++ b/drivers/media/dvb/frontends/dib7000p.c
-@@ -10,6 +10,7 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dvb_math.h"
- #include "dvb_frontend.h"
-@@ -68,6 +69,7 @@ struct dib7000p_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib7000p_power_mode {
-@@ -81,6 +83,13 @@ static int dib7090_set_diversity_in(struct dvb_frontend *fe, int onoff);
-
- static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg >> 8;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -97,11 +106,20 @@ static u16 dib7000p_read_word(struct dib7000p_state *state, u16 reg)
- if (i2c_transfer(state->i2c_adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -113,7 +131,10 @@ static int dib7000p_write_word(struct dib7000p_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c_adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+ return ret;
- }
-
- static void dib7000p_write_tab(struct dib7000p_state *state, u16 * buf)
-@@ -1646,6 +1667,7 @@ int dib7000p_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 defau
- return -ENOMEM;
-
- dpst->i2c_adap = i2c;
-+ mutex_init(&dpst->i2c_buffer_lock);
-
- for (k = no_of_demods - 1; k >= 0; k--) {
- dpst->cfg = cfg[k];
-@@ -2324,6 +2346,7 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- demod = &st->demod;
- demod->demodulator_priv = st;
- memcpy(&st->demod.ops, &dib7000p_ops, sizeof(struct dvb_frontend_ops));
-+ mutex_init(&st->i2c_buffer_lock);
-
- dib7000p_write_word(st, 1287, 0x0003); /* sram lead in, rdy */
-
-@@ -2333,8 +2356,9 @@ struct dvb_frontend *dib7000p_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr,
- st->version = dib7000p_read_word(st, 897);
-
- /* FIXME: make sure the dev.parent field is initialized, or else
-- request_firmware() will hit an OOPS (this should be moved somewhere
-- more common) */
-+ request_firmware() will hit an OOPS (this should be moved somewhere
-+ more common) */
-+ st->i2c_master.gated_tuner_i2c_adap.dev.parent = i2c_adap->dev.parent;
-
- dibx000_init_i2c_master(&st->i2c_master, DIB7000P, st->i2c_adap, st->i2c_addr);
-
-diff --git a/drivers/media/dvb/frontends/dib8000.c b/drivers/media/dvb/frontends/dib8000.c
-index 7d2ea11..fe284d5 100644
---- a/drivers/media/dvb/frontends/dib8000.c
-+++ b/drivers/media/dvb/frontends/dib8000.c
-@@ -10,6 +10,8 @@
- #include <linux/kernel.h>
- #include <linux/slab.h>
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-+
- #include "dvb_math.h"
-
- #include "dvb_frontend.h"
-@@ -37,6 +39,7 @@ struct i2c_device {
- u8 addr;
- u8 *i2c_write_buffer;
- u8 *i2c_read_buffer;
-+ struct mutex *i2c_buffer_lock;
- };
-
- struct dib8000_state {
-@@ -77,6 +80,7 @@ struct dib8000_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[4];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- enum dib8000_power_mode {
-@@ -86,24 +90,39 @@ enum dib8000_power_mode {
-
- static u16 dib8000_i2c_read16(struct i2c_device *i2c, u16 reg)
- {
-+ u16 ret;
- struct i2c_msg msg[2] = {
-- {.addr = i2c->addr >> 1, .flags = 0,
-- .buf = i2c->i2c_write_buffer, .len = 2},
-- {.addr = i2c->addr >> 1, .flags = I2C_M_RD,
-- .buf = i2c->i2c_read_buffer, .len = 2},
-+ {.addr = i2c->addr >> 1, .flags = 0, .len = 2},
-+ {.addr = i2c->addr >> 1, .flags = I2C_M_RD, .len = 2},
- };
-
-+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
-+ msg[0].buf = i2c->i2c_write_buffer;
- msg[0].buf[0] = reg >> 8;
- msg[0].buf[1] = reg & 0xff;
-+ msg[1].buf = i2c->i2c_read_buffer;
-
- if (i2c_transfer(i2c->adap, msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (msg[1].buf[0] << 8) | msg[1].buf[1];
-+ ret = (msg[1].buf[0] << 8) | msg[1].buf[1];
-+ mutex_unlock(i2c->i2c_buffer_lock);
-+ return ret;
- }
-
- static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- state->i2c_write_buffer[0] = reg >> 8;
- state->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -120,7 +139,10 @@ static u16 dib8000_read_word(struct dib8000_state *state, u16 reg)
- if (i2c_transfer(state->i2c.adap, state->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ ret = (state->i2c_read_buffer[0] << 8) | state->i2c_read_buffer[1];
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
-@@ -135,22 +157,35 @@ static u32 dib8000_read32(struct dib8000_state *state, u16 reg)
-
- static int dib8000_i2c_write16(struct i2c_device *i2c, u16 reg, u16 val)
- {
-- struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0,
-- .buf = i2c->i2c_write_buffer, .len = 4};
-+ struct i2c_msg msg = {.addr = i2c->addr >> 1, .flags = 0, .len = 4};
- int ret = 0;
-
-+ if (mutex_lock_interruptible(i2c->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
-+ msg.buf = i2c->i2c_write_buffer;
- msg.buf[0] = (reg >> 8) & 0xff;
- msg.buf[1] = reg & 0xff;
- msg.buf[2] = (val >> 8) & 0xff;
- msg.buf[3] = val & 0xff;
-
- ret = i2c_transfer(i2c->adap, &msg, 1) != 1 ? -EREMOTEIO : 0;
-+ mutex_unlock(i2c->i2c_buffer_lock);
-
- return ret;
- }
-
- static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&state->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- state->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- state->i2c_write_buffer[1] = reg & 0xff;
- state->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -162,7 +197,11 @@ static int dib8000_write_word(struct dib8000_state *state, u16 reg, u16 val)
- state->msg[0].buf = state->i2c_write_buffer;
- state->msg[0].len = 4;
-
-- return i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = (i2c_transfer(state->i2c.adap, state->msg, 1) != 1 ?
-+ -EREMOTEIO : 0);
-+ mutex_unlock(&state->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static const s16 coeff_2k_sb_1seg_dqpsk[8] = {
-@@ -2434,8 +2473,15 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
- if (!client.i2c_read_buffer) {
- dprintk("%s: not enough memory", __func__);
- ret = -ENOMEM;
-- goto error_memory;
-+ goto error_memory_read;
-+ }
-+ client.i2c_buffer_lock = kzalloc(sizeof(struct mutex), GFP_KERNEL);
-+ if (!client.i2c_buffer_lock) {
-+ dprintk("%s: not enough memory", __func__);
-+ ret = -ENOMEM;
-+ goto error_memory_lock;
- }
-+ mutex_init(client.i2c_buffer_lock);
-
- for (k = no_of_demods - 1; k >= 0; k--) {
- /* designated i2c address */
-@@ -2476,8 +2522,10 @@ int dib8000_i2c_enumeration(struct i2c_adapter *host, int no_of_demods, u8 defau
- }
-
- error:
-+ kfree(client.i2c_buffer_lock);
-+error_memory_lock:
- kfree(client.i2c_read_buffer);
--error_memory:
-+error_memory_read:
- kfree(client.i2c_write_buffer);
-
- return ret;
-@@ -2581,6 +2629,8 @@ struct dvb_frontend *dib8000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, s
- state->i2c.addr = i2c_addr;
- state->i2c.i2c_write_buffer = state->i2c_write_buffer;
- state->i2c.i2c_read_buffer = state->i2c_read_buffer;
-+ mutex_init(&state->i2c_buffer_lock);
-+ state->i2c.i2c_buffer_lock = &state->i2c_buffer_lock;
- state->gpio_val = cfg->gpio_val;
- state->gpio_dir = cfg->gpio_dir;
-
-diff --git a/drivers/media/dvb/frontends/dib9000.c b/drivers/media/dvb/frontends/dib9000.c
-index a085588..b931074 100644
---- a/drivers/media/dvb/frontends/dib9000.c
-+++ b/drivers/media/dvb/frontends/dib9000.c
-@@ -38,6 +38,15 @@ struct i2c_device {
- #define DibInitLock(lock) mutex_init(lock)
- #define DibFreeLock(lock)
-
-+struct dib9000_pid_ctrl {
-+#define DIB9000_PID_FILTER_CTRL 0
-+#define DIB9000_PID_FILTER 1
-+ u8 cmd;
-+ u8 id;
-+ u16 pid;
-+ u8 onoff;
-+};
-+
- struct dib9000_state {
- struct i2c_device i2c;
-
-@@ -99,6 +108,10 @@ struct dib9000_state {
- struct i2c_msg msg[2];
- u8 i2c_write_buffer[255];
- u8 i2c_read_buffer[255];
-+ DIB_LOCK demod_lock;
-+ u8 get_frontend_internal;
-+ struct dib9000_pid_ctrl pid_ctrl[10];
-+ s8 pid_ctrl_index; /* -1: empty list; -2: do not use the list */
- };
-
- static const u32 fe_info[44] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-@@ -1743,19 +1756,56 @@ EXPORT_SYMBOL(dib9000_set_gpio);
- int dib9000_fw_pid_filter_ctrl(struct dvb_frontend *fe, u8 onoff)
- {
- struct dib9000_state *state = fe->demodulator_priv;
-- u16 val = dib9000_read_word(state, 294 + 1) & 0xffef;
-+ u16 val;
-+ int ret;
-+
-+ if ((state->pid_ctrl_index != -2) && (state->pid_ctrl_index < 9)) {
-+ /* postpone the pid filtering cmd */
-+ dprintk("pid filter cmd postpone");
-+ state->pid_ctrl_index++;
-+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER_CTRL;
-+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
-+ return 0;
-+ }
-+
-+ DibAcquireLock(&state->demod_lock);
-+
-+ val = dib9000_read_word(state, 294 + 1) & 0xffef;
- val |= (onoff & 0x1) << 4;
-
- dprintk("PID filter enabled %d", onoff);
-- return dib9000_write_word(state, 294 + 1, val);
-+ ret = dib9000_write_word(state, 294 + 1, val);
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
-+
- }
- EXPORT_SYMBOL(dib9000_fw_pid_filter_ctrl);
-
- int dib9000_fw_pid_filter(struct dvb_frontend *fe, u8 id, u16 pid, u8 onoff)
- {
- struct dib9000_state *state = fe->demodulator_priv;
-+ int ret;
-+
-+ if (state->pid_ctrl_index != -2) {
-+ /* postpone the pid filtering cmd */
-+ dprintk("pid filter postpone");
-+ if (state->pid_ctrl_index < 9) {
-+ state->pid_ctrl_index++;
-+ state->pid_ctrl[state->pid_ctrl_index].cmd = DIB9000_PID_FILTER;
-+ state->pid_ctrl[state->pid_ctrl_index].id = id;
-+ state->pid_ctrl[state->pid_ctrl_index].pid = pid;
-+ state->pid_ctrl[state->pid_ctrl_index].onoff = onoff;
-+ } else
-+ dprintk("can not add any more pid ctrl cmd");
-+ return 0;
-+ }
-+
-+ DibAcquireLock(&state->demod_lock);
- dprintk("Index %x, PID %d, OnOff %d", id, pid, onoff);
-- return dib9000_write_word(state, 300 + 1 + id, onoff ? (1 << 13) | pid : 0);
-+ ret = dib9000_write_word(state, 300 + 1 + id,
-+ onoff ? (1 << 13) | pid : 0);
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
- EXPORT_SYMBOL(dib9000_fw_pid_filter);
-
-@@ -1778,6 +1828,7 @@ static void dib9000_release(struct dvb_frontend *demod)
- DibFreeLock(&state->platform.risc.mbx_lock);
- DibFreeLock(&state->platform.risc.mem_lock);
- DibFreeLock(&state->platform.risc.mem_mbx_lock);
-+ DibFreeLock(&state->demod_lock);
- dibx000_exit_i2c_master(&st->i2c_master);
-
- i2c_del_adapter(&st->tuner_adap);
-@@ -1795,14 +1846,19 @@ static int dib9000_sleep(struct dvb_frontend *fe)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u8 index_frontend;
-- int ret;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- ret = state->fe[index_frontend]->ops.sleep(state->fe[index_frontend]);
- if (ret < 0)
-- return ret;
-+ goto error;
- }
-- return dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
-+ ret = dib9000_mbx_send(state, OUT_MSG_FE_SLEEP, NULL, 0);
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_fe_get_tune_settings(struct dvb_frontend *fe, struct dvb_frontend_tune_settings *tune)
-@@ -1816,7 +1872,10 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- struct dib9000_state *state = fe->demodulator_priv;
- u8 index_frontend, sub_index_frontend;
- fe_status_t stat;
-- int ret;
-+ int ret = 0;
-+
-+ if (state->get_frontend_internal == 0)
-+ DibAcquireLock(&state->demod_lock);
-
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- state->fe[index_frontend]->ops.read_status(state->fe[index_frontend], &stat);
-@@ -1846,14 +1905,15 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- state->fe[index_frontend]->dtv_property_cache.rolloff;
- }
- }
-- return 0;
-+ ret = 0;
-+ goto return_value;
- }
- }
-
- /* get the channel from master chip */
- ret = dib9000_fw_get_channel(fe, fep);
- if (ret != 0)
-- return ret;
-+ goto return_value;
-
- /* synchronize the cache with the other frontends */
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
-@@ -1866,8 +1926,12 @@ static int dib9000_get_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- state->fe[index_frontend]->dtv_property_cache.code_rate_LP = fe->dtv_property_cache.code_rate_LP;
- state->fe[index_frontend]->dtv_property_cache.rolloff = fe->dtv_property_cache.rolloff;
- }
-+ ret = 0;
-
-- return 0;
-+return_value:
-+ if (state->get_frontend_internal == 0)
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_set_tune_state(struct dvb_frontend *fe, enum frontend_tune_state tune_state)
-@@ -1912,6 +1976,10 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- dprintk("dib9000: must specify bandwidth ");
- return 0;
- }
-+
-+ state->pid_ctrl_index = -1; /* postpone the pid filtering cmd */
-+ DibAcquireLock(&state->demod_lock);
-+
- fe->dtv_property_cache.delivery_system = SYS_DVBT;
-
- /* set the master status */
-@@ -1974,13 +2042,18 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- /* check the tune result */
- if (exit_condition == 1) { /* tune failed */
- dprintk("tune failed");
-+ DibReleaseLock(&state->demod_lock);
-+ /* tune failed; put all the pid filtering cmd to junk */
-+ state->pid_ctrl_index = -1;
- return 0;
- }
-
- dprintk("tune success on frontend%i", index_frontend_success);
-
- /* synchronize all the channel cache */
-+ state->get_frontend_internal = 1;
- dib9000_get_frontend(state->fe[0], fep);
-+ state->get_frontend_internal = 0;
-
- /* retune the other frontends with the found channel */
- channel_status.status = CHANNEL_STATUS_PARAMETERS_SET;
-@@ -2025,6 +2098,28 @@ static int dib9000_set_frontend(struct dvb_frontend *fe, struct dvb_frontend_par
- /* turn off the diversity for the last frontend */
- dib9000_fw_set_diversity_in(state->fe[index_frontend - 1], 0);
-
-+ DibReleaseLock(&state->demod_lock);
-+ if (state->pid_ctrl_index >= 0) {
-+ u8 index_pid_filter_cmd;
-+ u8 pid_ctrl_index = state->pid_ctrl_index;
-+
-+ state->pid_ctrl_index = -2;
-+ for (index_pid_filter_cmd = 0;
-+ index_pid_filter_cmd <= pid_ctrl_index;
-+ index_pid_filter_cmd++) {
-+ if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER_CTRL)
-+ dib9000_fw_pid_filter_ctrl(state->fe[0],
-+ state->pid_ctrl[index_pid_filter_cmd].onoff);
-+ else if (state->pid_ctrl[index_pid_filter_cmd].cmd == DIB9000_PID_FILTER)
-+ dib9000_fw_pid_filter(state->fe[0],
-+ state->pid_ctrl[index_pid_filter_cmd].id,
-+ state->pid_ctrl[index_pid_filter_cmd].pid,
-+ state->pid_ctrl[index_pid_filter_cmd].onoff);
-+ }
-+ }
-+ /* do not postpone any more the pid filtering */
-+ state->pid_ctrl_index = -2;
-+
- return 0;
- }
-
-@@ -2041,6 +2136,7 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
- u8 index_frontend;
- u16 lock = 0, lock_slave = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
- lock_slave |= dib9000_read_lock(state->fe[index_frontend]);
-
-@@ -2059,6 +2155,8 @@ static int dib9000_read_status(struct dvb_frontend *fe, fe_status_t * stat)
- if ((lock & 0x0008) || (lock_slave & 0x0008))
- *stat |= FE_HAS_LOCK;
-
-+ DibReleaseLock(&state->demod_lock);
-+
- return 0;
- }
-
-@@ -2066,10 +2164,14 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u16 *c;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR,
- state->i2c_read_buffer, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-@@ -2077,7 +2179,10 @@ static int dib9000_read_ber(struct dvb_frontend *fe, u32 * ber)
- c = (u16 *)state->i2c_read_buffer;
-
- *ber = c[10] << 16 | c[11];
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
-@@ -2086,7 +2191,9 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- u8 index_frontend;
- u16 *c = (u16 *)state->i2c_read_buffer;
- u16 val;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- *strength = 0;
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++) {
- state->fe[index_frontend]->ops.read_signal_strength(state->fe[index_frontend], &val);
-@@ -2097,8 +2204,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- }
-
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-
-@@ -2107,7 +2216,10 @@ static int dib9000_read_signal_strength(struct dvb_frontend *fe, u16 * strength)
- *strength = 65535;
- else
- *strength += val;
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- static u32 dib9000_get_snr(struct dvb_frontend *fe)
-@@ -2151,6 +2263,7 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
- u8 index_frontend;
- u32 snr_master;
-
-+ DibAcquireLock(&state->demod_lock);
- snr_master = dib9000_get_snr(fe);
- for (index_frontend = 1; (index_frontend < MAX_NUMBER_OF_FRONTENDS) && (state->fe[index_frontend] != NULL); index_frontend++)
- snr_master += dib9000_get_snr(state->fe[index_frontend]);
-@@ -2161,6 +2274,8 @@ static int dib9000_read_snr(struct dvb_frontend *fe, u16 * snr)
- } else
- *snr = 0;
-
-+ DibReleaseLock(&state->demod_lock);
-+
- return 0;
- }
-
-@@ -2168,15 +2283,22 @@ static int dib9000_read_unc_blocks(struct dvb_frontend *fe, u32 * unc)
- {
- struct dib9000_state *state = fe->demodulator_priv;
- u16 *c = (u16 *)state->i2c_read_buffer;
-+ int ret = 0;
-
-+ DibAcquireLock(&state->demod_lock);
- DibAcquireLock(&state->platform.risc.mem_mbx_lock);
-- if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0)
-- return -EIO;
-+ if (dib9000_fw_memmbx_sync(state, FE_SYNC_CHANNEL) < 0) {
-+ ret = -EIO;
-+ goto error;
-+ }
- dib9000_risc_mem_read(state, FE_MM_R_FE_MONITOR, (u8 *) c, 16 * 2);
- DibReleaseLock(&state->platform.risc.mem_mbx_lock);
-
- *unc = c[12];
-- return 0;
-+
-+error:
-+ DibReleaseLock(&state->demod_lock);
-+ return ret;
- }
-
- int dib9000_i2c_enumeration(struct i2c_adapter *i2c, int no_of_demods, u8 default_addr, u8 first_addr)
-@@ -2322,6 +2444,10 @@ struct dvb_frontend *dib9000_attach(struct i2c_adapter *i2c_adap, u8 i2c_addr, c
- DibInitLock(&st->platform.risc.mbx_lock);
- DibInitLock(&st->platform.risc.mem_lock);
- DibInitLock(&st->platform.risc.mem_mbx_lock);
-+ DibInitLock(&st->demod_lock);
-+ st->get_frontend_internal = 0;
-+
-+ st->pid_ctrl_index = -2;
-
- st->fe[0] = fe;
- fe->demodulator_priv = st;
-diff --git a/drivers/media/dvb/frontends/dibx000_common.c b/drivers/media/dvb/frontends/dibx000_common.c
-index dc5d17a..774d507 100644
---- a/drivers/media/dvb/frontends/dibx000_common.c
-+++ b/drivers/media/dvb/frontends/dibx000_common.c
-@@ -1,4 +1,5 @@
- #include <linux/i2c.h>
-+#include <linux/mutex.h>
-
- #include "dibx000_common.h"
-
-@@ -10,6 +11,13 @@ MODULE_PARM_DESC(debug, "turn on debugging (default: 0)");
-
- static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
- {
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
- mst->i2c_write_buffer[0] = (reg >> 8) & 0xff;
- mst->i2c_write_buffer[1] = reg & 0xff;
- mst->i2c_write_buffer[2] = (val >> 8) & 0xff;
-@@ -21,11 +29,21 @@ static int dibx000_write_word(struct dibx000_i2c_master *mst, u16 reg, u16 val)
- mst->msg[0].buf = mst->i2c_write_buffer;
- mst->msg[0].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ ret = i2c_transfer(mst->i2c_adap, mst->msg, 1) != 1 ? -EREMOTEIO : 0;
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
- {
-+ u16 ret;
-+
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- mst->i2c_write_buffer[0] = reg >> 8;
- mst->i2c_write_buffer[1] = reg & 0xff;
-
-@@ -42,7 +60,10 @@ static u16 dibx000_read_word(struct dibx000_i2c_master *mst, u16 reg)
- if (i2c_transfer(mst->i2c_adap, mst->msg, 2) != 2)
- dprintk("i2c read error on %d", reg);
-
-- return (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
-+ ret = (mst->i2c_read_buffer[0] << 8) | mst->i2c_read_buffer[1];
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+
-+ return ret;
- }
-
- static int dibx000_is_i2c_done(struct dibx000_i2c_master *mst)
-@@ -257,6 +278,7 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- struct i2c_msg msg[], int num)
- {
- struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
-+ int ret;
-
- if (num > 32) {
- dprintk("%s: too much I2C message to be transmitted (%i).\
-@@ -264,10 +286,15 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- return -ENOMEM;
- }
-
-- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
--
- dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_GPIO_6_7);
-
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+
-+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
-+
- /* open the gate */
- dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
- mst->msg[0].addr = mst->i2c_addr;
-@@ -282,7 +309,11 @@ static int dibx000_i2c_gated_gpio67_xfer(struct i2c_adapter *i2c_adap,
- mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
- mst->msg[num + 1].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
-+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
-+ num : -EIO);
-+
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+ return ret;
- }
-
- static struct i2c_algorithm dibx000_i2c_gated_gpio67_algo = {
-@@ -294,6 +325,7 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- struct i2c_msg msg[], int num)
- {
- struct dibx000_i2c_master *mst = i2c_get_adapdata(i2c_adap);
-+ int ret;
-
- if (num > 32) {
- dprintk("%s: too much I2C message to be transmitted (%i).\
-@@ -301,10 +333,14 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- return -ENOMEM;
- }
-
-- memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
--
- dibx000_i2c_select_interface(mst, DIBX000_I2C_INTERFACE_TUNER);
-
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+ memset(mst->msg, 0, sizeof(struct i2c_msg) * (2 + num));
-+
- /* open the gate */
- dibx000_i2c_gate_ctrl(mst, &mst->i2c_write_buffer[0], msg[0].addr, 1);
- mst->msg[0].addr = mst->i2c_addr;
-@@ -319,7 +355,10 @@ static int dibx000_i2c_gated_tuner_xfer(struct i2c_adapter *i2c_adap,
- mst->msg[num + 1].buf = &mst->i2c_write_buffer[4];
- mst->msg[num + 1].len = 4;
-
-- return i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ? num : -EIO;
-+ ret = (i2c_transfer(mst->i2c_adap, mst->msg, 2 + num) == 2 + num ?
-+ num : -EIO);
-+ mutex_unlock(&mst->i2c_buffer_lock);
-+ return ret;
- }
-
- static struct i2c_algorithm dibx000_i2c_gated_tuner_algo = {
-@@ -390,8 +429,18 @@ static int i2c_adapter_init(struct i2c_adapter *i2c_adap,
- int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
- struct i2c_adapter *i2c_adap, u8 i2c_addr)
- {
-- u8 tx[4];
-- struct i2c_msg m = {.addr = i2c_addr >> 1,.buf = tx,.len = 4 };
-+ int ret;
-+
-+ mutex_init(&mst->i2c_buffer_lock);
-+ if (mutex_lock_interruptible(&mst->i2c_buffer_lock) < 0) {
-+ dprintk("could not acquire lock");
-+ return -EINVAL;
-+ }
-+ memset(mst->msg, 0, sizeof(struct i2c_msg));
-+ mst->msg[0].addr = i2c_addr >> 1;
-+ mst->msg[0].flags = 0;
-+ mst->msg[0].buf = mst->i2c_write_buffer;
-+ mst->msg[0].len = 4;
-
- mst->device_rev = device_rev;
- mst->i2c_adap = i2c_adap;
-@@ -431,9 +480,12 @@ int dibx000_init_i2c_master(struct dibx000_i2c_master *mst, u16 device_rev,
- "DiBX000: could not initialize the master i2c_adapter\n");
-
- /* initialize the i2c-master by closing the gate */
-- dibx000_i2c_gate_ctrl(mst, tx, 0, 0);
-+ dibx000_i2c_gate_ctrl(mst, mst->i2c_write_buffer, 0, 0);
-+
-+ ret = (i2c_transfer(i2c_adap, mst->msg, 1) == 1);
-+ mutex_unlock(&mst->i2c_buffer_lock);
-
-- return i2c_transfer(i2c_adap, &m, 1) == 1;
-+ return ret;
- }
-
- EXPORT_SYMBOL(dibx000_init_i2c_master);
-diff --git a/drivers/media/dvb/frontends/dibx000_common.h b/drivers/media/dvb/frontends/dibx000_common.h
-index f031165..5e01147 100644
---- a/drivers/media/dvb/frontends/dibx000_common.h
-+++ b/drivers/media/dvb/frontends/dibx000_common.h
-@@ -33,6 +33,7 @@ struct dibx000_i2c_master {
- struct i2c_msg msg[34];
- u8 i2c_write_buffer[8];
- u8 i2c_read_buffer[2];
-+ struct mutex i2c_buffer_lock;
- };
-
- extern int dibx000_init_i2c_master(struct dibx000_i2c_master *mst,
-commit 45cbff13693d645fa5dcbba964e802e1746b2e57
-Author: Olivier Grenie <olivier.grenie@dibcom.fr>
-Date: Mon Aug 1 17:45:58 2011 +0200
-
- [media] dib0700: protect the dib0700 buffer access
-
- This patch protects the common buffer access inside the dib0700 in order
- to manage concurrent access. This protection is done using mutex.
-
- Cc: Mauro Carvalho Chehab <mchehab@redhat.com>
- Cc: Florian Mickler <florian@mickler.org>
- Cc: stable@kernel.org
-
- Signed-off-by: Javier Marcet <javier@marcet.info>
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
- Signed-off-by: Patrick Boettcher <patrick.boettcher@dibcom.fr>
-
-diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
-index 5eb91b4..291b645 100644
---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
-@@ -30,6 +30,11 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- struct dib0700_state *st = d->priv;
- int ret;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- ret = usb_control_msg(d->udev, usb_rcvctrlpipe(d->udev, 0),
- REQUEST_GET_VERSION,
- USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
-@@ -46,6 +51,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- if (fwtype != NULL)
- *fwtype = (st->buf[12] << 24) | (st->buf[13] << 16) |
- (st->buf[14] << 8) | st->buf[15];
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-@@ -108,7 +114,12 @@ int dib0700_ctrl_rd(struct dvb_usb_device *d, u8 *tx, u8 txlen, u8 *rx, u8 rxlen
- int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_dir, u8 gpio_val)
- {
- struct dib0700_state *st = d->priv;
-- s16 ret;
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- st->buf[0] = REQUEST_SET_GPIO;
- st->buf[1] = gpio;
-@@ -116,6 +127,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
-
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-@@ -125,6 +137,11 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
- int ret;
-
- if (st->fw_version >= 0x10201) {
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_USB_XFER_LEN;
- st->buf[1] = (nb_ts_packets >> 8) & 0xff;
- st->buf[2] = nb_ts_packets & 0xff;
-@@ -132,6 +149,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
- deb_info("set the USB xfer len to %i Ts packet\n", nb_ts_packets);
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
-+ mutex_unlock(&d->usb_mutex);
- } else {
- deb_info("this firmware does not allow to change the USB xfer len\n");
- ret = -EIO;
-@@ -208,6 +226,10 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
-
- } else {
- /* Write request */
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
- st->buf[0] = REQUEST_NEW_I2C_WRITE;
- st->buf[1] = msg[i].addr << 1;
- st->buf[2] = (en_start << 7) | (en_stop << 6) |
-@@ -227,6 +249,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
- USB_TYPE_VENDOR | USB_DIR_OUT,
- 0, 0, st->buf, msg[i].len + 4,
- USB_CTRL_GET_TIMEOUT);
-+ mutex_unlock(&d->usb_mutex);
- if (result < 0) {
- deb_info("i2c write error (status = %d)\n", result);
- break;
-@@ -249,6 +272,10 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
-
- if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
- return -EAGAIN;
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- for (i = 0; i < num; i++) {
- /* fill in the address */
-@@ -279,6 +306,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
- break;
- }
- }
-+ mutex_unlock(&d->usb_mutex);
- mutex_unlock(&d->i2c_mutex);
-
- return i;
-@@ -337,7 +365,12 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- u16 pll_loopdiv, u16 free_div, u16 dsuScaler)
- {
- struct dib0700_state *st = d->priv;
-- s16 ret;
-+ int ret;
-+
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-
- st->buf[0] = REQUEST_SET_CLOCK;
- st->buf[1] = (en_pll << 7) | (pll_src << 6) |
-@@ -352,6 +385,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- st->buf[9] = dsuScaler & 0xff; /* LSB */
-
- ret = dib0700_ctrl_wr(d, st->buf, 10);
-+ mutex_unlock(&d->usb_mutex);
-
- return ret;
- }
-@@ -360,10 +394,16 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- {
- struct dib0700_state *st = d->priv;
- u16 divider;
-+ int ret;
-
- if (scl_kHz == 0)
- return -EINVAL;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_I2C_PARAM;
- divider = (u16) (30000 / scl_kHz);
- st->buf[1] = 0;
-@@ -379,7 +419,11 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- deb_info("setting I2C speed: %04x %04x %04x (%d kHz).",
- (st->buf[2] << 8) | (st->buf[3]), (st->buf[4] << 8) |
- st->buf[5], (st->buf[6] << 8) | st->buf[7], scl_kHz);
-- return dib0700_ctrl_wr(d, st->buf, 8);
-+
-+ ret = dib0700_ctrl_wr(d, st->buf, 8);
-+ mutex_unlock(&d->usb_mutex);
-+
-+ return ret;
- }
-
-
-@@ -515,6 +559,11 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
- }
- }
-
-+ if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_ENABLE_VIDEO;
- /* this bit gives a kind of command,
- * rather than enabling something or not */
-@@ -548,7 +597,10 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
-
- deb_info("data for streaming: %x %x\n", st->buf[1], st->buf[2]);
-
-- return dib0700_ctrl_wr(adap->dev, st->buf, 4);
-+ ret = dib0700_ctrl_wr(adap->dev, st->buf, 4);
-+ mutex_unlock(&adap->dev->usb_mutex);
-+
-+ return ret;
- }
-
- int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
-@@ -557,6 +609,11 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- struct dib0700_state *st = d->priv;
- int new_proto, ret;
-
-+ if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-+ dprintk("could not acquire lock");
-+ return 0;
-+ }
-+
- st->buf[0] = REQUEST_SET_RC;
- st->buf[1] = 0;
- st->buf[2] = 0;
-@@ -567,23 +624,29 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- else if (rc_type == RC_TYPE_NEC)
- new_proto = 0;
- else if (rc_type == RC_TYPE_RC6) {
-- if (st->fw_version < 0x10200)
-- return -EINVAL;
-+ if (st->fw_version < 0x10200) {
-+ ret = -EINVAL;
-+ goto out;
-+ }
-
- new_proto = 2;
-- } else
-- return -EINVAL;
-+ } else {
-+ ret = -EINVAL;
-+ goto out;
-+ }
-
- st->buf[1] = new_proto;
-
- ret = dib0700_ctrl_wr(d, st->buf, 3);
- if (ret < 0) {
- err("ir protocol setup failed");
-- return ret;
-+ goto out;
- }
-
- d->props.rc.core.protocol = rc_type;
-
-+out:
-+ mutex_unlock(&d->usb_mutex);
- return ret;
- }
-
-commit aeb2d456b746164a4bd19e53de0a6678ca63fcad
-Author: Olivier Grenie <olivier.grenie@dibcom.fr>
-Date: Thu Aug 4 18:10:03 2011 +0200
-
- [media] dib0700: correct error message
-
- The goal of this patch is to correct a previous patch. In case of error,
- the err() function should be used instead of dprintk() function.
-
- Signed-off-by: Olivier Grenie <olivier.grenie@dibcom.fr>
-
-diff --git a/drivers/media/dvb/dvb-usb/dib0700_core.c b/drivers/media/dvb/dvb-usb/dib0700_core.c
-index 291b645..b693ed1 100644
---- a/drivers/media/dvb/dvb-usb/dib0700_core.c
-+++ b/drivers/media/dvb/dvb-usb/dib0700_core.c
-@@ -31,7 +31,7 @@ int dib0700_get_version(struct dvb_usb_device *d, u32 *hwversion,
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -117,7 +117,7 @@ int dib0700_set_gpio(struct dvb_usb_device *d, enum dib07x0_gpios gpio, u8 gpio_
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -138,7 +138,7 @@ static int dib0700_set_usb_xfer_len(struct dvb_usb_device *d, u16 nb_ts_packets)
-
- if (st->fw_version >= 0x10201) {
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -227,7 +227,7 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
- } else {
- /* Write request */
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
- st->buf[0] = REQUEST_NEW_I2C_WRITE;
-@@ -273,7 +273,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
- if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
- return -EAGAIN;
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -368,7 +368,7 @@ static int dib0700_set_clock(struct dvb_usb_device *d, u8 en_pll,
- int ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -400,7 +400,7 @@ int dib0700_set_i2c_speed(struct dvb_usb_device *d, u16 scl_kHz)
- return -EINVAL;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -560,7 +560,7 @@ int dib0700_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
- }
-
- if (mutex_lock_interruptible(&adap->dev->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
-@@ -610,7 +610,7 @@ int dib0700_change_protocol(struct rc_dev *rc, u64 rc_type)
- int new_proto, ret;
-
- if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
-- dprintk("could not acquire lock");
-+ err("could not acquire lock");
- return 0;
- }
-
diff --git a/libre/linux-libre/ext4-options.patch b/libre/linux-libre/ext4-options.patch
deleted file mode 100644
index ea48c384b..000000000
--- a/libre/linux-libre/ext4-options.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-Report: https://bbs.archlinux.org/profile.php?id=33804
-Signed-off-by: Tom Gundersen <teg@jklm.no>
-Cc: Thomas Baechler <thomas@archlinux.org>
-Cc: Tobias Powalowski <tobias.powalowski@googlemail.com>
-Cc: Dave Reisner <d@falconindy.com>
----
- fs/ext4/super.c | 15 +++++++++++++++
- 1 file changed, 15 insertions(+)
-
-diff --git a/fs/ext4/super.c b/fs/ext4/super.c
-index 502c61f..30de9cd 100644
---- a/fs/ext4/super.c
-+++ b/fs/ext4/super.c
-@@ -1333,6 +1333,7 @@ enum {
- Opt_inode_readahead_blks, Opt_journal_ioprio,
- Opt_dioread_nolock, Opt_dioread_lock,
- Opt_discard, Opt_nodiscard, Opt_init_itable, Opt_noinit_itable,
-+ Opt_nocheck, Opt_reservation, Opt_noreservation, Opt_journal_inum,
- };
-
- static const match_table_t tokens = {
-@@ -1408,6 +1409,10 @@ static const match_table_t tokens = {
- {Opt_init_itable, "init_itable=%u"},
- {Opt_init_itable, "init_itable"},
- {Opt_noinit_itable, "noinit_itable"},
-+ {Opt_nocheck, "nocheck"},
-+ {Opt_reservation, "reservation"},
-+ {Opt_noreservation, "noreservation"},
-+ {Opt_journal_inum, "journal=%u"},
- {Opt_err, NULL},
- };
-
-@@ -1904,6 +1909,16 @@ set_qf_format:
- case Opt_noinit_itable:
- clear_opt(sb, INIT_INODE_TABLE);
- break;
-+#ifdef CONFIG_EXT4_USE_FOR_EXT23
-+ case Opt_nocheck:
-+ case Opt_reservation:
-+ case Opt_noreservation:
-+ case Opt_journal_inum:
-+ ext4_msg(sb, KERN_WARNING,
-+ "ext3 mount option \"%s\" ignored "
-+ "by ext4 module", p);
-+ break;
-+#endif
- default:
- ext4_msg(sb, KERN_ERR,
- "Unrecognized mount option \"%s\" "
-
diff --git a/libre/linux-libre/fix-i915.patch b/libre/linux-libre/fix-i915.patch
deleted file mode 100644
index 3b631361a..000000000
--- a/libre/linux-libre/fix-i915.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Signed-off-by: Zhao Yakui <yakui.zhao@intel.com>
-Tested-by: Santi <santi@agolina.net>
----
- drivers/gpu/drm/i915/intel_tv.c | 9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/drivers/gpu/drm/i915/intel_tv.c b/drivers/gpu/drm/i915/intel_tv.c
-index dc83b7a..c8f67bf 100644
---- a/drivers/gpu/drm/i915/intel_tv.c
-+++ b/drivers/gpu/drm/i915/intel_tv.c
-@@ -1267,6 +1267,15 @@
- DAC_B_0_7_V |
- DAC_C_0_7_V);
-
-+ /*
-+ * The TV sense state should be cleared to zero on cantiga platform. Otherwise
-+ * the TV is misdetected. This is hardware requirement.
-+ */
-+ if (IS_GM45(dev))
-+ tv_dac &= ~(TVDAC_STATE_CHG_EN | TVDAC_A_SENSE_CTL |
-+ TVDAC_B_SENSE_CTL | TVDAC_C_SENSE_CTL);
-+
-+
- I915_WRITE(TV_CTL, tv_ctl);
- I915_WRITE(TV_DAC, tv_dac);
- POSTING_READ(TV_DAC);
diff --git a/libre/linux-libre/fix-memblock-3.3.x.patch b/libre/linux-libre/fix-memblock-3.3.x.patch
deleted file mode 100644
index 3f6c984f4..000000000
--- a/libre/linux-libre/fix-memblock-3.3.x.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From: Tejun Heo <tj <at> kernel.org>
-Subject: [PATCH 3.4-rc3] memblock: memblock should be able to handle zero length operations
-Newsgroups: gmane.linux.kernel, gmane.linux.kernel.stable
-Date: 2012-04-20 15:31:34 GMT (2 days, 14 hours and 59 minutes ago)
-24aa07882b "memblock, x86: Replace memblock_x86_reserve/free_range()
-with generic ones" replaced x86 specific memblock operations with the
-generic ones; unfortunately, it lost zero length operation handling in
-the process making the kernel panic if somebody tries to reserve zero
-length area.
-
-There isn't much to be gained by being cranky to zero length
-operations and panicking is almost the worst response. Drop the
-BUG_ON() in memblock_reserve() and update
-memblock_add_region/isolate_range() so that all zero length operations
-are handled as noops.
-
-Signed-off-by: Tejun Heo <tj <at> kernel.org>
-Cc: stable <at> vger.kernel.org
-Reported-by: Valere Monseur <valere.monseur <at> ymail.com>
-Bisected-by: Joseph Freeman <jfree143dev <at> gmail.com>
-Tested-by: Joseph Freeman <jfree143dev <at> gmail.com>
-Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43098
----
-This is causing early panics if anyone tries to reserve zero len area,
-which unfortunately isn't too uncommon depending on BIOS. The fix is
-fairly safe. Unsure which tree it should go through. Cc'ing Linus
-and Ingo.
-
-Thanks.
-
- mm/memblock.c | 7 ++++++-
- 1 file changed, 6 insertions(+), 1 deletion(-)
-
-diff --git a/mm/memblock.c b/mm/memblock.c
-index 99f2855..a44eab3 100644
---- a/mm/memblock.c
-+++ b/mm/memblock.c
-@@ -330,6 +330,9 @@ static int __init_memblock memblock_add_region(struct memblock_type *type,
- phys_addr_t end = base + memblock_cap_size(base, &size);
- int i, nr_new;
-
-+ if (!size)
-+ return 0;
-+
- /* special case for empty array */
- if (type->regions[0].size == 0) {
- WARN_ON(type->cnt != 1 || type->total_size);
-@@ -430,6 +433,9 @@ static int __init_memblock memblock_isolate_range(struct memblock_type *type,
-
- *start_rgn = *end_rgn = 0;
-
-+ if (!size)
-+ return 0;
-+
- /* we'll create at most two more regions */
- while (type->cnt + 2 > type->max)
- if (memblock_double_array(type) < 0)
-@@ -514,7 +520,6 @@ int __init_memblock memblock_reserve(phys_addr_t base, phys_addr_t size)
- (unsigned long long)base,
- (unsigned long long)base + size,
- (void *)_RET_IP_);
-- BUG_ON(0 == size);
-
- return memblock_add_region(_rgn, base, size, MAX_NUMNODES);
- }
diff --git a/libre/linux-libre/fix-r8712u-3.3.2.patch b/libre/linux-libre/fix-r8712u-3.3.2.patch
deleted file mode 100644
index a83618dcd..000000000
--- a/libre/linux-libre/fix-r8712u-3.3.2.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-commit 2080913e017ab9f88379d93fd09546ad95faf87b
-Author: Larry Finger <Larry.Finger@lwfinger.net>
-Date: Sat Feb 25 18:10:21 2012 -0600
-
- staging: r8712u: Fix regression caused by commit 8c213fa
-
- In commit 8c213fa "staging: r8712u: Use asynchronous firmware loading",
- the command to release the firmware was placed in the wrong routine.
-
- In combination with the bug introduced in commit a5ee652 "staging: r8712u:
- Interface-state not fully tracked", the driver attempts to upload firmware
- that had already been released. This bug is the source of one of the
- problems in https://bugs.archlinux.org/task/27996#comment89833.
-
- Tested-by: Alberto Lago Ballesteros <saniukeokusainaya@gmail.com>
- Tested-by: Adrian <agib@gmx.de>
- Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
- Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-
-diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c
-index 4cf175f..7bbd53a 100644
---- a/drivers/staging/rtl8712/os_intfs.c
-+++ b/drivers/staging/rtl8712/os_intfs.c
-@@ -475,9 +475,6 @@ static int netdev_close(struct net_device *pnetdev)
- r8712_free_assoc_resources(padapter);
- /*s2-4.*/
- r8712_free_network_queue(padapter);
-- release_firmware(padapter->fw);
-- /* never exit with a firmware callback pending */
-- wait_for_completion(&padapter->rtl8712_fw_ready);
- return 0;
- }
-
-diff --git a/drivers/staging/rtl8712/usb_intf.c b/drivers/staging/rtl8712/usb_intf.c
-index fe0e2ff..e01fe14 100644
---- a/drivers/staging/rtl8712/usb_intf.c
-+++ b/drivers/staging/rtl8712/usb_intf.c
-@@ -30,6 +30,7 @@
-
- #include <linux/usb.h>
- #include <linux/module.h>
-+#include <linux/firmware.h>
-
- #include "osdep_service.h"
- #include "drv_types.h"
-@@ -620,6 +621,10 @@ static void r871xu_dev_remove(struct usb_interface *pusb_intf)
- struct _adapter *padapter = netdev_priv(pnetdev);
- struct usb_device *udev = interface_to_usbdev(pusb_intf);
-
-+ if (padapter->fw_found)
-+ release_firmware(padapter->fw);
-+ /* never exit with a firmware callback pending */
-+ wait_for_completion(&padapter->rtl8712_fw_ready);
- usb_set_intfdata(pusb_intf, NULL);
- if (padapter) {
- if (drvpriv.drv_registered == true)
diff --git a/libre/linux-libre/i915-fix-incorrect-error-message.patch b/libre/linux-libre/i915-fix-incorrect-error-message.patch
deleted file mode 100644
index e1addbb05..000000000
--- a/libre/linux-libre/i915-fix-incorrect-error-message.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-commit 6c76e0b94e484ffbdf38d2fe2769b6ca9aa99de4
-Author: Thomas Bächler <thomas@archlinux.org>
-Date: Mon Oct 31 19:16:18 2011 +0100
-
- Change accidental error message to debug message.
-
- According to https://lkml.org/lkml/2011/9/19/80, this is not supposed
- to be an error message, but a debug message. This worries users.
-
-diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
-index 04411ad..02d5794 100644
---- a/drivers/gpu/drm/i915/intel_display.c
-+++ b/drivers/gpu/drm/i915/intel_display.c
-@@ -5172,7 +5172,7 @@ static void ironlake_update_pch_refclk(struct drm_device *dev)
- } else {
- /* Enable SSC on PCH eDP if needed */
- if (intel_panel_use_ssc(dev_priv)) {
-- DRM_ERROR("enabling SSC on PCH\n");
-+ DRM_DEBUG("enabling SSC on PCH\n");
- temp |= DREF_SUPERSPREAD_SOURCE_ENABLE;
- }
- }
diff --git a/libre/linux-libre/i915-gpu-finish.patch b/libre/linux-libre/i915-gpu-finish.patch
deleted file mode 100644
index 5840c9181..000000000
--- a/libre/linux-libre/i915-gpu-finish.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-commit 389a55581e30607af0fcde6cdb4e54f189cf46cf
-Author: Chris Wilson <chris@chris-wilson.co.uk>
-Date: Tue Nov 29 15:12:16 2011 +0000
-
- drm/i915: Only clear the GPU domains upon a successful finish
-
- By clearing the GPU read domains before waiting upon the buffer, we run
- the risk of the wait being interrupted and the domains prematurely
- cleared. The next time we attempt to wait upon the buffer (after
- userspace handles the signal), we believe that the buffer is idle and so
- skip the wait.
-
- There are a number of bugs across all generations which show signs of an
- overly haste reuse of active buffers.
-
- Such as:
-
- https://bugs.freedesktop.org/show_bug.cgi?id=29046
- https://bugs.freedesktop.org/show_bug.cgi?id=35863
- https://bugs.freedesktop.org/show_bug.cgi?id=38952
- https://bugs.freedesktop.org/show_bug.cgi?id=40282
- https://bugs.freedesktop.org/show_bug.cgi?id=41098
- https://bugs.freedesktop.org/show_bug.cgi?id=41102
- https://bugs.freedesktop.org/show_bug.cgi?id=41284
- https://bugs.freedesktop.org/show_bug.cgi?id=42141
-
- A couple of those pre-date i915_gem_object_finish_gpu(), so may be
- unrelated (such as a wild write from a userspace command buffer), but
- this does look like a convincing cause for most of those bugs.
-
- Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
- Cc: stable@kernel.org
- Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
- Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
-
-diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
-index d560175..036bc58 100644
---- a/drivers/gpu/drm/i915/i915_gem.c
-+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3087,10 +3087,13 @@ i915_gem_object_finish_gpu(struct drm_i915_gem_object *obj)
- return ret;
- }
-
-+ ret = i915_gem_object_wait_rendering(obj);
-+ if (ret)
-+ return ret;
-+
- /* Ensure that we invalidate the GPU's caches and TLBs. */
- obj->base.read_domains &= ~I915_GEM_GPU_DOMAINS;
--
-- return i915_gem_object_wait_rendering(obj);
-+ return 0;
- }
-
- /**
diff --git a/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch b/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch
deleted file mode 100644
index a53a3a425..000000000
--- a/libre/linux-libre/iwlagn-fix-NULL-pointer-dereference.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This fix regression introduced by commit:
-
-commit 15b3f3b006b42a678523cad989bfd60b76bf4403
-Author: Wey-Yi Guy <wey-yi.w.guy@intel.com>
-Date: Fri Jun 3 07:54:13 2011 -0700
-
- iwlagn: set smps mode after assoc for 1000 device
-
-Also remove unneeded brackets on the way.
-
-Address:
-https://bugzilla.redhat.com/show_bug.cgi?id=744155
-
-If fix will not get 3.1 release, it should be applied in 3.1 stable.
-
-Cc: stable@kernel.org # 3.1+
-Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
----
- drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 4 ++--
- 1 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-index ca632f9..5004342 100644
---- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c
-@@ -296,8 +296,8 @@ static int iwlagn_rxon_connect(struct iwl_priv *priv,
- return ret;
- }
-
-- if ((ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION) &&
-- priv->cfg->ht_params->smps_mode)
-+ if (ctx->vif && ctx->vif->type == NL80211_IFTYPE_STATION &&
-+ priv->cfg->ht_params && priv->cfg->ht_params->smps_mode)
- ieee80211_request_smps(ctx->vif,
- priv->cfg->ht_params->smps_mode);
-
---
-1.7.1
diff --git a/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch b/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch
deleted file mode 100644
index 880849db5..000000000
--- a/libre/linux-libre/md-raid10-fix-bug-when-activating-a-hot-spare.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7fcc7c8acf0fba44d19a713207af7e58267c1179 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb@suse.de>
-Date: Mon, 31 Oct 2011 12:59:44 +1100
-Subject: md/raid10: Fix bug when activating a hot-spare.
-
-From: NeilBrown <neilb@suse.de>
-
-commit 7fcc7c8acf0fba44d19a713207af7e58267c1179 upstream.
-
-This is a fairly serious bug in RAID10.
-
-When a RAID10 array is degraded and a hot-spare is activated, the
-spare does not take up the empty slot, but rather replaces the first
-working device.
-This is likely to make the array non-functional. It would normally
-be possible to recover the data, but that would need care and is not
-guaranteed.
-
-This bug was introduced in commit
- 2bb77736ae5dca0a189829fbb7379d43364a9dac
-which first appeared in 3.1.
-
-Signed-off-by: NeilBrown <neilb@suse.de>
-Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
----
- drivers/md/raid10.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/md/raid10.c
-+++ b/drivers/md/raid10.c
-@@ -1337,7 +1337,7 @@ static int raid10_add_disk(mddev_t *mdde
- mirror_info_t *p = &conf->mirrors[mirror];
- if (p->recovery_disabled == mddev->recovery_disabled)
- continue;
-- if (!p->rdev)
-+ if (p->rdev)
- continue;
-
- disk_stack_limits(mddev->gendisk, rdev->bdev,
diff --git a/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch b/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch
deleted file mode 100644
index 9e570dd3f..000000000
--- a/libre/linux-libre/usb-add-reset-resume-quirk-for-several-webcams.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-commit 2394d67e446bf616a0885167d5f0d397bdacfdfc
-Author: Oliver Neukum <oneukum@suse.de>
-Date: Tue Sep 13 08:42:21 2011 +0200
-
- USB: add RESET_RESUME for webcams shown to be quirky
-
- The new runtime PM code has shown that many webcams suffer
- from a race condition that may crash them upon resume.
- Runtime PM is especially prone to show the problem because
- it retains power to the cameras at all times. However
- system suspension may also crash the devices and retain
- power to the devices.
- The only way to solve this problem without races is in
- usbcore with the RESET_RESUME quirk.
-
- Signed-off-by: Oliver Neukum <oneukum@suse.de>
- Signed-off-by: stable <stable@kernel.org>
- Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index 81ce6a8..38f0510 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -38,6 +38,24 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Creative SB Audigy 2 NX */
- { USB_DEVICE(0x041e, 0x3020), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C200 */
-+ { USB_DEVICE(0x046d, 0x0802), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C250 */
-+ { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam B/C500 */
-+ { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam Pro 9000 */
-+ { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C310 */
-+ { USB_DEVICE(0x046d, 0x081b), .driver_info = USB_QUIRK_RESET_RESUME },
-+
-+ /* Logitech Webcam C270 */
-+ { USB_DEVICE(0x046d, 0x0825), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Harmony 700-series */
- { USB_DEVICE(0x046d, 0xc122), .driver_info = USB_QUIRK_DELAY_INIT },
-
-@@ -69,6 +87,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- { USB_DEVICE(0x06a3, 0x0006), .driver_info =
- USB_QUIRK_CONFIG_INTF_STRINGS },
-
-+ /* Guillemot Webcam Hercules Dualpix Exchange*/
-+ { USB_DEVICE(0x06f8, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* M-Systems Flash Disk Pioneers */
- { USB_DEVICE(0x08ec, 0x1000), .driver_info = USB_QUIRK_RESET_RESUME },
-
-commit 5b253d88cc6c65a23cefc457a5a4ef139913c5fc
-Author: Jon Levell <linuxusb@coralbark.net>
-Date: Thu Sep 29 20:42:52 2011 +0100
-
- USB: add quirk for Logitech C300 web cam
-
- My webcam is a Logitech C300 and I get "chipmunk"ed squeaky sound.
- The following trivial patch fixes it.
-
- Signed-off-by: Jon Levell <linuxusb@coralbark.net>
- Cc: stable <stable@kernel.org>
- Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index 38f0510..d6a8d82 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -44,6 +44,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Logitech Webcam C250 */
- { USB_DEVICE(0x046d, 0x0804), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C300 */
-+ { USB_DEVICE(0x046d, 0x0805), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Webcam B/C500 */
- { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-
-diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
-index d6a8d82..caa1991 100644
---- a/drivers/usb/core/quirks.c
-+++ b/drivers/usb/core/quirks.c
-@@ -50,6 +50,9 @@ static const struct usb_device_id usb_quirk_list[] = {
- /* Logitech Webcam B/C500 */
- { USB_DEVICE(0x046d, 0x0807), .driver_info = USB_QUIRK_RESET_RESUME },
-
-+ /* Logitech Webcam C600 */
-+ { USB_DEVICE(0x046d, 0x0808), .driver_info = USB_QUIRK_RESET_RESUME },
-+
- /* Logitech Webcam Pro 9000 */
- { USB_DEVICE(0x046d, 0x0809), .driver_info = USB_QUIRK_RESET_RESUME },
-
diff --git a/libre/thunderbird-libre/gcc46.patch b/libre/thunderbird-libre/gcc46.patch
deleted file mode 100644
index 71a3686ea..000000000
--- a/libre/thunderbird-libre/gcc46.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur comm-1.9.2.orig//mozilla/gfx/ots/src/os2.cc comm-1.9.2/mozilla/gfx/ots/src/os2.cc
---- comm-1.9.2.orig//mozilla/gfx/ots/src/os2.cc 2011-04-14 11:37:21.000000000 -0700
-+++ comm-1.9.2/mozilla/gfx/ots/src/os2.cc 2011-04-29 09:10:23.635807433 -0700
-@@ -2,6 +2,8 @@
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
-+#include <cstddef>
-+
- #include "os2.h"
-
- #include "head.h"
diff --git a/libre/thunderbird-libre/gnuzilla-addons.patch b/libre/thunderbird-libre/gnuzilla-addons.patch
deleted file mode 100644
index 2c0e4a68f..000000000
--- a/libre/thunderbird-libre/gnuzilla-addons.patch
+++ /dev/null
@@ -1,36 +0,0 @@
---- usr/lib/thunderbird-3.1/defaults/pref/all-thunderbird.js 2011-03-04 17:28:11.000000000 -0300
-+++ all-thunderbird.js 2011-03-08 11:22:31.437207173 -0300
-@@ -144,9 +144,9 @@
- pref("extensions.update.interval", 86400); // Check for updates to Extensions and
- // Themes every day
- // Non-symmetric (not shared by extensions) extension-specific [update] preferences
--pref("extensions.getMoreExtensionsURL", "https://%LOCALE%.add-ons.mozilla.com/%LOCALE%/%APP%/%VERSION%/extensions/");
--pref("extensions.getMoreThemesURL", "https://%LOCALE%.add-ons.mozilla.com/%LOCALE%/%APP%/%VERSION%/themes/");
--pref("extensions.getMorePluginsURL", "https://%LOCALE%.add-ons.mozilla.com/%LOCALE%/%APP%/%VERSION%/plugins/");
-+pref("extensions.getMoreExtensionsURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-+pref("extensions.getMoreThemesURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-+pref("extensions.getMorePluginsURL", "http://www.gnu.org/software/gnuzilla/addons.html");
- pref("extensions.dss.enabled", false); // Dynamic Skin Switching
- pref("extensions.dss.switchPending", false); // Non-dynamic switch pending after next
-
-@@ -155,14 +155,14 @@
-
- // Preferences for the Get Add-ons pane
- pref("extensions.getAddons.showPane", true);
--pref("extensions.getAddons.browseAddons", "https://addons.mozilla.org/%LOCALE%/%APP%");
-+pref("extensions.getAddons.browseAddons", "http://www.gnu.org/software/gnuzilla/addons.html");
- pref("extensions.getAddons.maxResults", 5);
--pref("extensions.getAddons.recommended.browseURL", "https://addons.mozilla.org/%LOCALE%/%APP%/recommended");
--pref("extensions.getAddons.recommended.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/list/featured/all/10/%OS%/%VERSION%");
--pref("extensions.getAddons.search.browseURL", "https://addons.mozilla.org/%LOCALE%/%APP%/search?q=%TERMS%");
--pref("extensions.getAddons.search.url", "https://services.addons.mozilla.org/%LOCALE%/%APP%/api/%API_VERSION%/search/%TERMS%/all/10/%OS%/%VERSION%");
-+pref("extensions.getAddons.recommended.browseURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-+pref("extensions.getAddons.recommended.url", "http://www.gnu.org/software/gnuzilla/addons.html");
-+pref("extensions.getAddons.search.browseURL", "http://www.gnu.org/software/gnuzilla/addons.html");
-+pref("extensions.getAddons.search.url", "http://www.gnu.org/software/gnuzilla/addons.html");
-
--pref("xpinstall.whitelist.add", "addons.mozilla.org");
-+pref("xpinstall.whitelist.add", "www.gnu.org");
- pref("xpinstall.whitelist.add.36", "getpersonas.com");
-
- pref("mail.shell.checkDefaultClient", true);
diff --git a/libre/thunderbird-libre/libvpx.patch b/libre/thunderbird-libre/libvpx.patch
deleted file mode 100644
index d0f9a0f4c..000000000
--- a/libre/thunderbird-libre/libvpx.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur comm-release.orig/mozilla/configure.in comm-release/mozilla/configure.in
---- comm-release.orig/mozilla/configure.in 2012-02-05 18:02:17.376830377 +0000
-+++ comm-release/mozilla/configure.in 2012-02-05 18:03:25.246274275 +0000
-@@ -5629,7 +5629,7 @@
- dnl v0.9.6 one to check for.
- AC_TRY_COMPILE([
- #include <vpx/vpx_decoder.h>
-- #if !defined(VPX_CODEC_USE_INPUT_PARTITION)
-+ #if !defined(VPX_CODEC_USE_INPUT_FRAGMENTS)
- #error "test failed."
- #endif
- ],
diff --git a/libre/thunderbird-libre/mozilla-notify.patch b/libre/thunderbird-libre/mozilla-notify.patch
deleted file mode 100644
index 952567b0e..000000000
--- a/libre/thunderbird-libre/mozilla-notify.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up comm-1.9.2/mozilla/toolkit/system/gnome/nsAlertsIconListener.cpp.libnotify comm-1.9.2/mozilla/toolkit/system/gnome/nsAlertsIconListener.cpp
---- comm-1.9.2/mozilla/toolkit/system/gnome/nsAlertsIconListener.cpp.libnotify 2010-10-27 09:05:36.000000000 +0200
-+++ comm-1.9.2/mozilla/toolkit/system/gnome/nsAlertsIconListener.cpp 2010-11-08 13:28:04.564002379 +0100
-@@ -204,7 +204,7 @@ nsAlertsIconListener::ShowAlert(GdkPixbu
- {
- NotifyNotification* notify = notify_notification_new(mAlertTitle.get(),
- mAlertText.get(),
-- NULL, NULL);
-+ NULL);
- if (!notify)
- return NS_ERROR_OUT_OF_MEMORY;
-
diff --git a/libre/thunderbird-libre/python2.7.patch b/libre/thunderbird-libre/python2.7.patch
deleted file mode 100644
index 2d159d479..000000000
--- a/libre/thunderbird-libre/python2.7.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- configure.in 2010-10-13 08:37:29.000000000 -0700
-+++ configure.in~ 2010-10-19 10:32:06.360019362 -0700
-@@ -878,7 +878,7 @@
- AC_MSG_RESULT([yes])
- fi
-
--MOZ_PATH_PROGS(PYTHON, $PYTHON python2.6 python2.5 python2.4 python)
-+MOZ_PATH_PROGS(PYTHON, $PYTHON python2.7 python2.6 python2.5 python2.4 python)
- if test -z "$PYTHON"; then
- AC_MSG_ERROR([python was not found in \$PATH])
- fi
diff --git a/libre/thunderbird-libre/thunderbird-appversion.patch b/libre/thunderbird-libre/thunderbird-appversion.patch
deleted file mode 100644
index 3f7a54686..000000000
--- a/libre/thunderbird-libre/thunderbird-appversion.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nru comm-1.9.2.orig/mail/installer/Makefile.in comm-1.9.2/mail/installer/Makefile.in
---- comm-1.9.2.orig/mail/installer/Makefile.in 2010-04-30 22:41:37.000000000 +0300
-+++ comm-1.9.2/mail/installer/Makefile.in 2010-05-05 20:20:29.551660469 +0300
-@@ -42,6 +42,8 @@
-
- include $(DEPTH)/config/autoconf.mk
-
-+MOZ_APP_VERSION="3.1"
-+
- include $(topsrcdir)/config/rules.mk
-
- MOZ_PKG_REMOVALS = $(srcdir)/removed-files.in
diff --git a/libre/thunderbird-libre/thunderbird-preferences.patch b/libre/thunderbird-libre/thunderbird-preferences.patch
deleted file mode 100644
index 627f02434..000000000
--- a/libre/thunderbird-libre/thunderbird-preferences.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-diff -Nur comm-1.9.2.orig/mail/app/profile/all-thunderbird.js comm-1.9.2/mail/app/profile/all-thunderbird.js
---- comm-1.9.2.orig/mail/app/profile/all-thunderbird.js 2010-06-23 20:43:08.000000000 +0300
-+++ comm-1.9.2/mail/app/profile/all-thunderbird.js 2010-06-25 00:37:36.518929684 +0300
-@@ -125,7 +125,7 @@
- pref("app.update.showInstalledUI", false);
-
- // Release notes URL
--pref("app.releaseNotesURL", "http://live.mozillamessaging.com/%APP%/releasenotes?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-+pref("app.releaseNotesURL", "http://www.mozillamessaging.com/%APP%/%VERSION%/releasenotes?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-
- // Base URL for web-based support pages.
- pref("app.support.baseURL", "http://support.live.mozillamessaging.com/%LOCALE%/%APP%/%APPBUILDID%/");
-diff -Nur comm-1.9.2.orig/mail/branding/nightly/thunderbird-branding.js comm-1.9.2/mail/branding/nightly/thunderbird-branding.js
---- comm-1.9.2.orig/mail/branding/nightly/thunderbird-branding.js 2010-06-23 20:43:08.000000000 +0300
-+++ comm-1.9.2/mail/branding/nightly/thunderbird-branding.js 2010-06-25 00:36:10.605569121 +0300
-@@ -1,11 +1,11 @@
- // Default start page
--pref("mailnews.start_page.url","https://live.mozillamessaging.com/%APP%/start?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-+pref("mailnews.start_page.url","https://www.mozillamessaging.com/%APP%/%VERSION%/start?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-
- // first launch welcome page
--pref("mailnews.start_page.welcome_url","https://live.mozillamessaging.com/%APP%/firstrun?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-+pref("mailnews.start_page.welcome_url","https://www.mozillamessaging.com/%APP%/%VERSION%/firstrun?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-
- // start page override to load after an update
--pref("mailnews.start_page.override_url","https://live.mozillamessaging.com/%APP%/whatsnew?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-+pref("mailnews.start_page.override_url","https://www.mozillamessaging.com/%APP%/%VERSION%/whatsnew?locale=%LOCALE%&version=%VERSION%&os=%OS%&buildid=%APPBUILDID%");
-
- // Interval: Time between checks for a new version (in seconds)
- // nightly=8 hours, official=24 hours
diff --git a/libre/thunderbird-libre/thunderbird-shared-error.patch b/libre/thunderbird-libre/thunderbird-shared-error.patch
deleted file mode 100644
index ae41bbc1e..000000000
--- a/libre/thunderbird-libre/thunderbird-shared-error.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -up comm-central/mail/installer/Makefile.in.shared-error comm-central/mail/installer/Makefile.in
---- comm-central/mail/installer/Makefile.in.shared-error 2009-09-16 13:47:43.000000000 +0200
-+++ comm-central/mail/installer/Makefile.in 2009-09-16 13:48:25.000000000 +0200
-@@ -95,9 +95,11 @@ endif
- # mozconfig instead.
- ifndef MAIL_PKG_SHARED
- ifndef BUILD_STATIC_LIBS
-+ifeq (BUILD_STATIC_LIBS, 1)
- $(error you need an "--enable-static" build to package a build)
- endif
- endif
-+endif
-
- # On mozilla-central, packager.mk uses core_abspath to redefine DIST
- # As the comm-central config.mk doesn't set it, do it ourselves instead
diff --git a/libre/thunderbird-libre/xulrunner-png14.patch b/libre/thunderbird-libre/xulrunner-png14.patch
deleted file mode 100644
index 1dc0ecda5..000000000
--- a/libre/thunderbird-libre/xulrunner-png14.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- mozilla/modules/libpr0n/encoders/png/nsPNGEncoder.cpp.orig 2010-01-17 00:15:53.979744638 +0100
-+++ mozilla/modules/libpr0n/encoders/png/nsPNGEncoder.cpp 2010-01-17 00:16:07.855993411 +0100
-@@ -135,7 +135,7 @@
-
- // initialize
- mPNG = png_create_write_struct(PNG_LIBPNG_VER_STRING,
-- png_voidp_NULL,
-+ NULL,
- ErrorCallback,
- ErrorCallback);
- if (! mPNG)
diff --git a/testing/krb5/PKGBUILD b/testing/krb5/PKGBUILD
deleted file mode 100644
index 4709af354..000000000
--- a/testing/krb5/PKGBUILD
+++ /dev/null
@@ -1,77 +0,0 @@
-# $Id: PKGBUILD 159408 2012-05-23 20:51:29Z stephane $
-# Maintainer: Stéphane Gaudreault <stephane@archlinux.org>
-
-pkgname=krb5
-pkgver=1.10.1
-pkgrel=3
-pkgdesc="The Kerberos network authentication system"
-arch=('i686' 'x86_64')
-url="http://web.mit.edu/kerberos/"
-license=('custom')
-depends=('e2fsprogs' 'libldap' 'keyutils')
-makedepends=('perl')
-backup=('etc/krb5.conf' 'var/lib/krb5kdc/kdc.conf')
-source=(http://web.mit.edu/kerberos/dist/${pkgname}/1.10/${pkgname}-${pkgver}-signed.tar
- krb5-1.10.1-gcc47.patch
- krb5-kadmind
- krb5-kdc
- krb5-kpropd)
-sha1sums=('f9f3b77173f68b268b43e4f9c29bf7c9f3fd1f0e'
- '78b759d566b1fdefd9bbcd06df14f07f12effe96'
- '2aa229369079ed1bbb201a1ef72c47bf143f4dbe'
- '77d2312ecd8bf12a6e72cc8fd871a8ac93b23393'
- '7f402078fa65bb9ff1beb6cbbbb017450df78560')
-options=('!emptydirs')
-
-build() {
- tar zxvf ${pkgname}-${pkgver}.tar.gz
- cd "${srcdir}/${pkgname}-${pkgver}/src"
-
- # With gcc47 : deltat.c:1694:12: error: 'yylval' may be used uninitialized
- # in this function [-Werror=maybe-uninitialized]
- # As this is generated code, just ignore the complaint.
- patch -Np2 -i ../../krb5-1.10.1-gcc47.patch
- rm lib/krb5/krb/deltat.c
-
- # FS#25384
- sed -i "/KRB5ROOT=/s/\/local//" util/ac_check_krb5.m4
-
- export CFLAGS+=" -fPIC -fno-strict-aliasing -fstack-protector-all"
- export CPPFLAGS+=" -I/usr/include/et"
- ./configure --prefix=/usr \
- --mandir=/usr/share/man \
- --localstatedir=/var/lib \
- --enable-shared \
- --with-system-et \
- --with-system-ss \
- --disable-rpath \
- --without-tcl \
- --enable-dns-for-realm \
- --with-ldap \
- --without-system-verto
- make
-}
-
-package() {
- cd "${srcdir}/${pkgname}-${pkgver}/src"
- make DESTDIR="${pkgdir}" EXAMPLEDIR=/usr/share/doc/${pkgname}/examples install
-
- # Fix FS#29889
- install -m 644 plugins/kdb/ldap/libkdb_ldap/kerberos.{ldif,schema} "${pkgdir}"/usr/share/doc/${pkgname}/examples
-
- # Sample KDC config file
- install -dm 755 "${pkgdir}"/var/lib/krb5kdc
- install -pm 644 config-files/kdc.conf "${pkgdir}"/var/lib/krb5kdc/kdc.conf
-
- # Default configuration file
- install -dm 755 "${pkgdir}"/etc
- install -pm 644 config-files/krb5.conf "${pkgdir}"/etc/krb5.conf
-
- install -dm 755 "${pkgdir}"/etc/rc.d
- install -m 755 ../../krb5-{kdc,kadmind,kpropd} "${pkgdir}"/etc/rc.d
-
- install -dm 755 "${pkgdir}"/usr/share/aclocal
- install -m 644 util/ac_check_krb5.m4 "${pkgdir}"/usr/share/aclocal
-
- install -Dm644 "${srcdir}"/${pkgname}-${pkgver}/NOTICE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
-}
diff --git a/testing/krb5/krb5-1.10.1-gcc47.patch b/testing/krb5/krb5-1.10.1-gcc47.patch
deleted file mode 100644
index ffd01c2a3..000000000
--- a/testing/krb5/krb5-1.10.1-gcc47.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Naur krb5-1.10.1.ori/src/lib/krb5/krb/x-deltat.y krb5-1.10.1/src/lib/krb5/krb/x-deltat.y
---- krb5-1.10.1.ori/src/lib/krb5/krb/x-deltat.y 2011-09-06 07:34:32.000000000 -0400
-+++ krb5-1.10.1/src/lib/krb5/krb/x-deltat.y 2012-03-24 13:15:11.543551318 -0400
-@@ -44,6 +44,7 @@
- #ifdef __GNUC__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wuninitialized"
-+#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
- #endif
-
- #include <ctype.h>
diff --git a/testing/krb5/krb5-kadmind b/testing/krb5/krb5-kadmind
deleted file mode 100644
index 04df0dcff..000000000
--- a/testing/krb5/krb5-kadmind
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# general config
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID /usr/sbin/kadmind`
-case "$1" in
- start)
- stat_busy "Starting Kerberos Admin Daemon"
- if [ -z "$PID" ]; then
- /usr/sbin/kadmind
- fi
- if [ ! -z "$PID" -o $? -gt 0 ]; then
- stat_fail
- else
- add_daemon krb5-kadmind
- stat_done
- fi
- ;;
- stop)
- stat_busy "Stopping Kerberos Admin Daemon"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon krb5-kadmind
- stat_done
- fi
- ;;
- restart)
- $0 stop
- sleep 1
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
- ;;
-esac
-exit 0
diff --git a/testing/krb5/krb5-kdc b/testing/krb5/krb5-kdc
deleted file mode 100644
index 05a03411e..000000000
--- a/testing/krb5/krb5-kdc
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# general config
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID /usr/sbin/krb5kdc`
-case "$1" in
- start)
- stat_busy "Starting Kerberos Authentication"
- if [ -z "$PID" ]; then
- /usr/sbin/krb5kdc
- fi
- if [ ! -z "$PID" -o $? -gt 0 ]; then
- stat_fail
- else
- add_daemon krb5-kdc
- stat_done
- fi
- ;;
- stop)
- stat_busy "Stopping Kerberos Authentication"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon krb5-kdc
- stat_done
- fi
- ;;
- restart)
- $0 stop
- sleep 1
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
- ;;
-esac
-exit 0
diff --git a/testing/krb5/krb5-kpropd b/testing/krb5/krb5-kpropd
deleted file mode 100644
index a0077d68e..000000000
--- a/testing/krb5/krb5-kpropd
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/bin/bash
-
-# general config
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-PID=`pidof -o %PPID /usr/sbin/kpropd`
-case "$1" in
- start)
- stat_busy "Starting Kerberos Database Propagation Daemon"
- if [ -z "$PID" ]; then
- /usr/sbin/kpropd -S
- fi
- if [ ! -z "$PID" -o $? -gt 0 ]; then
- stat_fail
- else
- add_daemon kpropd
- stat_done
- fi
- ;;
- stop)
- stat_busy "Stopping Kerberos Database Propagation Daemon"
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- if [ $? -gt 0 ]; then
- stat_fail
- else
- rm_daemon kpropd
- stat_done
- fi
- ;;
- restart)
- $0 stop
- sleep 1
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
- ;;
-esac
-exit 0
diff --git a/testing/mdadm/PKGBUILD b/testing/mdadm/PKGBUILD
deleted file mode 100644
index 1043e191b..000000000
--- a/testing/mdadm/PKGBUILD
+++ /dev/null
@@ -1,58 +0,0 @@
-# $Id: PKGBUILD 159624 2012-05-25 23:53:03Z dreisner $
-# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
-# Contributor: Judd Vinet <jvinet@zeroflux.org>
-pkgname=mdadm
-pkgver=3.2.5
-pkgrel=2
-pkgdesc="A tool for managing/monitoring Linux md device arrays, also known as Software RAID"
-arch=(i686 x86_64)
-license=('GPL')
-url="http://neil.brown.name/blog/mdadm"
-groups=('base')
-conflicts=('mkinitcpio<0.7')
-depends=('glibc')
-backup=('etc/mdadm.conf')
-source=(ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/mdadm-$pkgver.tar.bz2
- mdadm
- mdadm.conf
- mdadm_install
- mdadm_hook
- mdadm_udev_install
- mdadm.service
- disable-werror.patch)
-replaces=('raidtools')
-md5sums=('83ba4a6249ae24677e915e44c9cfcc58'
- '8333d405f550317c2bacd5510bf1cb60'
- '00cbed931db4f15b6ce49e3e7d433966'
- '609d10888727710cb20db7ac3e096116'
- 'fbb5542d9bdf87441a11dd7e7a0a17f8'
- 'd1d8e9eb81ce9347de74f3c84a9db09e'
- 'aafb5f9ac8437a284cbf948b9b13b179'
- '4ad87b74a4bc9a34621280abe0e0c3e4')
-
-build() {
- cd $srcdir/$pkgname-$pkgver
- patch -Np0 -i ../disable-werror.patch
- make CXFLAGS="$CFLAGS"
- # build static mdassemble for Arch's initramfs
- make MDASSEMBLE_AUTO=1 mdassemble
-
-}
-
-package() {
- cd $srcdir/$pkgname-$pkgver
- make INSTALL=/usr/bin/install DESTDIR=$pkgdir install
- install -D -m755 mdassemble $pkgdir/sbin/mdassemble
- install -D -m644 ../mdadm.conf $pkgdir/etc/mdadm.conf
- install -D -m755 ../mdadm $pkgdir/etc/rc.d/mdadm
- install -D -m644 ../mdadm_install $pkgdir/usr/lib/initcpio/install/mdadm
- install -D -m644 ../mdadm_hook $pkgdir/usr/lib/initcpio/hooks/mdadm
- install -D -m644 ../mdadm_udev_install $pkgdir/usr/lib/initcpio/install/mdadm_udev
- # symlink for backward compatibility
- ln -sf /usr/lib/initcpio/hooks/mdadm $pkgdir/usr/lib/initcpio/hooks/raid
- # move /lib/* to /usr/lib/
- mv $pkgdir/lib/udev $pkgdir/usr/lib/
- rm -rf $pkgdir/lib
- # systemd service file
- install -D -m644 $srcdir/mdadm.service $pkgdir/usr/lib/systemd/system/mdadm.service
-}
diff --git a/testing/mdadm/disable-werror.patch b/testing/mdadm/disable-werror.patch
deleted file mode 100644
index 50a33f19d..000000000
--- a/testing/mdadm/disable-werror.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- Makefile.old 2011-06-17 09:38:03.269238332 +0200
-+++ Makefile 2011-06-17 09:38:14.122398837 +0200
-@@ -42,7 +42,7 @@
-
- CC = $(CROSS_COMPILE)gcc
- CXFLAGS = -ggdb
--CWFLAGS = -Wall -Werror -Wstrict-prototypes -Wextra -Wno-unused-parameter
-+CWFLAGS = -Wall -Wstrict-prototypes -Wextra -Wno-unused-parameter
- ifdef WARN_UNUSED
- CWFLAGS += -Wp,-D_FORTIFY_SOURCE=2 -O
- endif
diff --git a/testing/mdadm/linux-3.0.patch b/testing/mdadm/linux-3.0.patch
deleted file mode 100644
index cd9d5473c..000000000
--- a/testing/mdadm/linux-3.0.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From f161d047eed634b3380262767f955eb888502e88 Mon Sep 17 00:00:00 2001
-From: NeilBrown <neilb@suse.de>
-Date: Fri, 17 Jun 2011 22:49:24 +1000
-Subject: [PATCH 1/1] util: correctly parse shorter linux version numbers.
-
-The next version of Linux might be 3.0. If it is, get_linux_version
-will fail.
-So make it more robust.
-
-Reported-by: Namhyung Kim <namhyung@gmail.com>
-Reported-by: Milan Broz <mbroz@redhat.com>
-Signed-off-by: NeilBrown <neilb@suse.de>
----
- util.c | 10 +++++-----
- 1 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/util.c b/util.c
-index 10bbe56..55d171a 100644
---- a/util.c
-+++ b/util.c
-@@ -146,16 +146,16 @@ int get_linux_version()
- {
- struct utsname name;
- char *cp;
-- int a,b,c;
-+ int a = 0, b = 0,c = 0;
- if (uname(&name) <0)
- return -1;
-
- cp = name.release;
- a = strtoul(cp, &cp, 10);
-- if (*cp != '.') return -1;
-- b = strtoul(cp+1, &cp, 10);
-- if (*cp != '.') return -1;
-- c = strtoul(cp+1, NULL, 10);
-+ if (*cp == '.')
-+ b = strtoul(cp+1, &cp, 10);
-+ if (*cp == '.')
-+ c = strtoul(cp+1, &cp, 10);
-
- return (a*1000000)+(b*1000)+c;
- }
---
-1.7.2.3
-
diff --git a/testing/mdadm/mdadm b/testing/mdadm/mdadm
deleted file mode 100755
index 9bf468e98..000000000
--- a/testing/mdadm/mdadm
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/bash
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-
-pidfile=/run/mdadm.pid
-if [[ -r $pidfile ]]; then
- read -r PID <"$pidfile"
- if [[ $PID && ! -d /proc/$PID ]]; then
- # stale pidfile
- unset PID
- rm -f "$pidfile"
- fi
-fi
-
-case $1 in
- start)
- stat_busy "Starting mdadm RAID Monitor"
- if [[ -z $PID ]] && mdadm --monitor --scan -i "$pidfile" -f; then
- add_daemon mdadm
- stat_done
- else
- stat_fail
- fi
- ;;
- stop)
- stat_busy "Stopping mdadm RAID Monitor"
- if [[ $PID ]] && kill "$PID" &>/dev/null; then
- rm_daemon mdadm
- stat_done
- else
- stat_fail
- fi
- ;;
- restart)
- $0 stop
- sleep 1
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|restart}"
-esac
diff --git a/testing/mdadm/mdadm.conf b/testing/mdadm/mdadm.conf
deleted file mode 100644
index 57bd4c683..000000000
--- a/testing/mdadm/mdadm.conf
+++ /dev/null
@@ -1,67 +0,0 @@
-# mdadm configuration file
-#
-# mdadm will function properly without the use of a configuration file,
-# but this file is useful for keeping track of arrays and member disks.
-# In general, a mdadm.conf file is created, and updated, after arrays
-# are created. This is the opposite behavior of /etc/raidtab which is
-# created prior to array construction.
-#
-#
-# the config file takes two types of lines:
-#
-# DEVICE lines specify a list of devices of where to look for
-# potential member disks
-#
-# ARRAY lines specify information about how to identify arrays so
-# so that they can be activated
-#
-
-
-# You can have more than one device line and use wild cards. The first
-# example includes SCSI the first partition of SCSI disks /dev/sdb,
-# /dev/sdc, /dev/sdd, /dev/sdj, /dev/sdk, and /dev/sdl. The second
-# line looks for array slices on IDE disks.
-#
-#DEVICE /dev/sd[bcdjkl]1
-#DEVICE /dev/hda1 /dev/hdb1
-#
-# The designation "partitions" will scan all partitions found in
-# /proc/partitions
-DEVICE partitions
-
-
-# ARRAY lines specify an array to assemble and a method of identification.
-# Arrays can currently be identified by using a UUID, superblock minor number,
-# or a listing of devices.
-#
-# super-minor is usually the minor number of the metadevice
-# UUID is the Universally Unique Identifier for the array
-# Each can be obtained using
-#
-# mdadm -D <md>
-#
-# To capture the UUIDs for all your RAID arrays to this file, run these:
-# to get a list of running arrays:
-# # mdadm -D --scan >>/etc/mdadm.conf
-# to get a list from superblocks:
-# # mdadm -E --scan >>/etc/mdadm.conf
-#
-#ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371
-#ARRAY /dev/md1 super-minor=1
-#ARRAY /dev/md2 devices=/dev/hda1,/dev/hdb1
-#
-# ARRAY lines can also specify a "spare-group" for each array. mdadm --monitor
-# will then move a spare between arrays in a spare-group if one array has a
-# failed drive but no spare
-#ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df spare-group=group1
-#ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 spare-group=group1
-#
-
-
-# When used in --follow (aka --monitor) mode, mdadm needs a
-# mail address and/or a program. To start mdadm's monitor mode, add
-# "mdadm" to your DAEMONS array in /etc/rc.conf
-#
-# If the lines are not found, mdadm will exit quietly
-#MAILADDR root@mydomain.tld
-#PROGRAM /usr/sbin/handle-mdadm-events
diff --git a/testing/mdadm/mdadm.service b/testing/mdadm/mdadm.service
deleted file mode 100644
index 8389715e8..000000000
--- a/testing/mdadm/mdadm.service
+++ /dev/null
@@ -1,8 +0,0 @@
-[Unit]
-Description=MDADM Event Monitor
-
-[Service]
-ExecStart=/sbin/mdadm --monitor --scan
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/mdadm/mdadm_hook b/testing/mdadm/mdadm_hook
deleted file mode 100755
index 787be5d0c..000000000
--- a/testing/mdadm/mdadm_hook
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/ash
-
-run_hook() {
- local i= mdconfig=/etc/mdadm.conf
-
- # for partitionable raid, we need to load md_mod first!
- modprobe md_mod 2>/dev/null
-
- if [ -n "$md" ]; then
- echo 'DEVICE partitions' >"$mdconfig"
- for i in $(cat /proc/cmdline); do
- case $i in
- # raid
- md=[0-9]*,/*)
- device=${i%%,*}
- device=${device/=/}
- array=${i#*,}
- echo "ARRAY /dev/$device devices=$array"
- ;;
- # partitionable raid
- md=d[0-9]*,/*)
- device=${i%%,*}
- device=${device/=/_}
- array=${i#*,}
- echo "ARRAY /dev/$device devices=$array"
- ;;
- # raid UUID
- md=[0-9]*,[0-9,a-fA-F]*)
- device=${i%%,*}
- device=${device/=/}
- array=${i#*,}
- echo "ARRAY /dev/$device UUID=$array"
- ;;
- # partitionable raid UUID
- md=d[0-9]*,[0-9,a-fA-F]*)
- device=${i%%,*}
- device=${device/=/_}
- array=${i#*,}
- echo "ARRAY /dev/$device UUID=$array"
- ;;
- esac
- done >>"$mdconfig"
- fi
-
- # assemble everything
- [ -s "$mdconfig" ] && /sbin/mdassemble
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/testing/mdadm/mdadm_install b/testing/mdadm/mdadm_install
deleted file mode 100644
index cf6159e40..000000000
--- a/testing/mdadm/mdadm_install
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-build() {
- add_checked_modules -f 'dm-' 'drivers/md/*'
-
- # check if a custom mdadm.conf exists
- if grep -q ^ARRAY /etc/mdadm.conf; then
- echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays."
- add_file "/etc/mdadm.conf"
- fi
- add_binary "/sbin/mdassemble"
-
- add_runscript
-}
-
-help() {
- cat <<HELPEOF
-This hook loads the necessary modules for any raid root device,
-and assembles the raid device when run.
-
-If arrays are defined in /etc/mdadm.conf, the file will be used instead
-of command line assembling.
-
-Command Line Setup:
-- for raid arrays with persistent superblocks:
- md=<md device no.>,dev0,dev1,...,devn
- md=<md device no.>,uuid
-- for partitionable raid arrays with persistent superblocks:
- md=d<md device no.>,dev0,dev1,...,devn
- md=d<md device no.>,uuid
-
-Parameters:
-- <md device no.> = the number of the md device:
- 0 means md0, 1 means md1, ...
-- <dev0-devn>: e.g. /dev/hda1,/dev/hdc1,/dev/sda1,/dev/sdb1
- or 0900878d:f95f6057:c39a36e9:55efa60a
-Examples:
-- md=d0,/dev/sda3,/dev/sda4 md=d1,/dev/hda1,/dev/hdb1
- This will setup 2 md partitionable arrays.
-- md=0,/dev/sda3,/dev/sda4 md=1,/dev/hda1,/dev/hdb1
- This will setup 2 md arrays with persistent superblocks.
-HELPEOF
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/testing/mdadm/mdadm_udev_install b/testing/mdadm/mdadm_udev_install
deleted file mode 100644
index f6f5de4ad..000000000
--- a/testing/mdadm/mdadm_udev_install
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/bash
-
-build() {
- add_checked_modules -f 'dm-' 'drivers/md/*'
-
- # check if a custom mdadm.conf exists
- if grep -qw ^ARRAY "$BASEDIR/etc/mdadm.conf"; then
- echo "Custom /etc/mdadm.conf file will be used in initramfs for assembling arrays."
- add_file "/etc/mdadm.conf"
- fi
-
- add_binary "mdadm"
- add_file "/usr/lib/udev/rules.d/64-md-raid.rules"
-}
-
-help() {
- cat <<HELPEOF
-This hook loads the necessary modules for a RAID array and uses incremental
-assembly via udev at runtime to create the devices. This hook with NOT work
-without the udev hook included on the image.
-HELPEOF
-}
-
-# vim: set ft=sh ts=4 sw=4 et:
diff --git a/testing/nfs-utils/PKGBUILD b/testing/nfs-utils/PKGBUILD
deleted file mode 100644
index cf92438b4..000000000
--- a/testing/nfs-utils/PKGBUILD
+++ /dev/null
@@ -1,105 +0,0 @@
-# $Id: PKGBUILD 159425 2012-05-24 07:56:08Z tpowa $
-# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
-# Contributor: John Proctor <jproctor@prium.net>
-# Contributor: dibblethewrecker <dibblethewrecker.at.jiwe.org>
-# Contributor: abelstr <abel@pinklf.eu>
-# Contributor: Marco Lima <cipparello gmail com>
-
-pkgname=nfs-utils
-pkgver=1.2.6
-pkgrel=1
-pkgdesc="Support programs for Network File Systems"
-arch=('i686' 'x86_64')
-url='http://nfs.sourceforge.net'
-license=('GPL')
-backup=(etc/{exports,idmapd.conf,nfsmount.conf} etc/conf.d/{nfs-common.conf,nfs-server.conf})
-depends=('glibc' 'e2fsprogs' 'rpcbind' 'libtirpc>=0.2.1' 'librpcsecgss>=0.19-2' 'nfsidmap' 'libevent>=2.0.10' 'libgssglue' 'device-mapper')
-makedepends=('pkgconfig' 'autoconf' 'automake')
-source=(http://downloads.sourceforge.net/project/nfs/${pkgname}/${pkgver}/${pkgname}-${pkgver}.tar.bz2
- nfs-common
- nfs-common.conf
- nfs-server
- nfs-server.conf
- exports
- idmapd.conf
- start-statd.patch
- nfs
- nfs-utils-1.1.4-mtab-sym.patch
- nfs-utils-1.1.4-no-exec.patch
- rpc-gssd.service
- rpc-mountd.service
- rpc-svcgssd.service
- rpc-idmapd.service
- rpc-statd.service
- nfsd.service
- var-lib-nfs-rpc_pipefs.mount
- proc-fs-nfsd.mount
- blkmapd.service
- nfs-utils.conf)
-install=nfs-utils.install
-md5sums=('8be543ca270c2234ff18f8c8d35e0d37'
- 'dd0d65fc6e8f422fa12520813098264b'
- 'f73f197a16b02c3e248488ec35c4cf43'
- 'e619f18354ff958ed624d05d08853d8f'
- '9cef69bc686cc5dcac23fbb51450747d'
- 'ff585faf410a62c4333a027c50b56bae'
- 'eb4f4027fab6fc1201f1ca04f5954c76'
- 'e9144277a89a620d9bc80413158a7d27'
- 'f5e7bba09a46c5c5d7007cac6eff9df5'
- '7674106eaaa4c149bccd4f05fe3604e9'
- '4f4827dfc93008dfadd0a530ad0872b2'
- '38855936dc55a5afe37d84edc0f11066'
- '965311784d49a7d126d512cadbe91deb'
- 'e05705d9ccccaeaeb1ecaee20adc05bc'
- 'd7df7bc311fd95c5b80017dd1741570d'
- '2e72ee082cba5d3ec6f51d2a105664da'
- '5d33d2e754fd37280365b287603bac90'
- '1cd65909fa0983047f3f06a3ab352401'
- '02a34835aa077146a90eb7d191e612d0'
- '8ffc2ebe932d29efe17d6f3f23d5b975'
- '8ac484023d786766d287ccbe878ae4ba')
-
-build() {
- cd $srcdir/${pkgname}-${pkgver}
- patch -Np1 -i ../nfs-utils-1.1.4-mtab-sym.patch
- #patch -Np1 -i ../nfs-utils-1.1.4-no-exec.patch
- # arch specific patch
- patch -Np0 -i $srcdir/start-statd.patch
-
- ./configure --prefix=/usr --enable-nfsv4 --enable-nfsv41 --enable-gss \
- --without-tcp-wrappers --with-statedir=/var/lib/nfs \
- --enable-ipv6 --sysconfdir=/etc --enable-libmount-mount \
- --enable-mountconfig
-
- make
-}
-
-package() {
- cd $srcdir/${pkgname}-${pkgver}
- # fix make install
- mkdir -p $pkgdir/sbin
- make DESTDIR=$pkgdir install
-
- # support python2 (FS#25120)
- sed -i '1s/python$/python2/' "$pkgdir"/usr/sbin/{nfsiostat,mountstats}
-
- # NFS & NFSv4 init scripts
- install -D -m 755 ../nfs-common "$pkgdir/"etc/rc.d/nfs-common
- install -D -m 755 ../nfs-server "$pkgdir/"etc/rc.d/nfs-server
- # Configuration
- install -D -m 644 ../exports "$pkgdir/"etc/exports
- install -D -m 644 ../idmapd.conf "$pkgdir/"etc/idmapd.conf
- install -D -m 644 ../nfs-common.conf "$pkgdir/"etc/conf.d/nfs-common.conf
- install -D -m 644 ../nfs-server.conf "$pkgdir/"etc/conf.d/nfs-server.conf
- install -D -m 644 ../nfs "$pkgdir/"etc/conf.d/nfs
- install -D -m 644 utils/mount/nfsmount.conf "$pkgdir/"etc/nfsmount.conf
- # systemd files
- for i in ${srcdir}/*.{service,mount}; do
- install -D -m 644 $i "$pkgdir/usr/lib/systemd/system/${i##*/}"
- done
- install -D -m 644 ../nfs-utils.conf "$pkgdir/"usr/lib/modules-load.d/nfs-utils.conf
- # directories
- mkdir "$pkgdir/"etc/exports.d
- mkdir "$pkgdir/"var/lib/nfs/rpc_pipefs
- mkdir "$pkgdir/"var/lib/nfs/v4recovery
-}
diff --git a/testing/nfs-utils/blkmapd.service b/testing/nfs-utils/blkmapd.service
deleted file mode 100644
index 16cb68bbb..000000000
--- a/testing/nfs-utils/blkmapd.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=pNFS block layout mapping daemon
-After=var-lib-nfs-rpc_pipefs.mount nfsd.service
-Requires=var-lib-nfs-rpc_pipefs.mount
-
-[Service]
-Type=forking
-ExecStart=/usr/sbin/blkmapd
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/exports b/testing/nfs-utils/exports
deleted file mode 100644
index 8f4aac598..000000000
--- a/testing/nfs-utils/exports
+++ /dev/null
@@ -1,15 +0,0 @@
-# /etc/exports
-#
-# List of directories exported to NFS clients. See exports(5).
-# Use exportfs -arv to reread.
-#
-# Example for NFSv2 and NFSv3:
-# /srv/home hostname1(rw,sync) hostname2(ro,sync)
-#
-# Example for NFSv4:
-# /srv/nfs4 hostname1(rw,sync,fsid=0)
-# /srv/nfs4/home hostname1(rw,sync,nohide)
-# Using Kerberos and integrity checking:
-# /srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt)
-# /srv/nfs4/home gss/krb5i(rw,sync,nohide)
-#
diff --git a/testing/nfs-utils/idmapd.conf b/testing/nfs-utils/idmapd.conf
deleted file mode 100644
index b1b23afe9..000000000
--- a/testing/nfs-utils/idmapd.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-[General]
-
-Verbosity = 0
-Pipefs-Directory = /var/lib/nfs/rpc_pipefs
-Domain = localdomain
-
-[Mapping]
-
-Nobody-User = nobody
-Nobody-Group = nobody
-
-[Translation]
-
-Method = nsswitch
diff --git a/testing/nfs-utils/nfs b/testing/nfs-utils/nfs
deleted file mode 100644
index 2d33cf3d4..000000000
--- a/testing/nfs-utils/nfs
+++ /dev/null
@@ -1,40 +0,0 @@
-#
-# Optinal options passed to rquotad
-RPCRQUOTADOPTS=""
-#
-# Optional arguments passed to in-kernel lockd
-#LOCKDARG=
-# TCP port rpc.lockd should listen on.
-#LOCKD_TCPPORT=32803
-# UDP port rpc.lockd should listen on.
-#LOCKD_UDPPORT=32769
-#
-# Optional arguments passed to rpc.nfsd. See rpc.nfsd(8)
-RPCNFSDARGS=""
-# Number of nfs server processes to be started.
-# The default is 8.
-RPCNFSDCOUNT=8
-# Set V4 grace period in seconds
-#NFSD_V4_GRACE=90
-#
-# Optional arguments passed to rpc.mountd. See rpc.mountd(8)
-RPCMOUNTDOPTS=""
-#
-# Optional arguments passed to rpc.statd. See rpc.statd(8)
-STATDARG=""
-#
-# Optional arguments passed to rpc.idmapd. See rpc.idmapd(8)
-RPCIDMAPDARGS=""
-#
-# Optional arguments passed to rpc.gssd. See rpc.gssd(8)
-RPCGSSDARGS=""
-#
-# Optional arguments passed to rpc.svcgssd. See rpc.svcgssd(8)
-RPCSVCGSSDARGS=""
-#
-# To enable RDMA support on the server by setting this to
-# the port the server should listen on
-#RDMA_PORT=20049
-#
-# Optional arguments passed to blkmapd. See blkmapd(8)
-BLKMAPDARGS=""
diff --git a/testing/nfs-utils/nfs-common b/testing/nfs-utils/nfs-common
deleted file mode 100644
index 7b16b4b3c..000000000
--- a/testing/nfs-utils/nfs-common
+++ /dev/null
@@ -1,315 +0,0 @@
-#!/bin/bash
-
-daemon_name=nfs-common
-
-NEED_STATD=
-STATD_OPTS=
-NEED_IDMAPD=
-IDMAPD_OPTS=
-NEED_GSSD=
-GSSD_OPTS=
-PIPEFS_MOUNTPOINT=
-PIPEFS_MOUNTOPTS=
-
-# rpc.statd daemon & binary location
-STATD_DAEMON_NAME=rpc.statd
-STATD="/usr/sbin/rpc.statd"
-
-# rpc.idmapd daemon & binary location
-IDMAPD_DAEMON_NAME=rpc.idmapd
-IDMAPD="/usr/sbin/rpc.idmapd"
-
-# rpc.gssd daemon & binary location
-GSSD_DAEMON_NAME=rpc.gssd
-GSSD="/usr/sbin/rpc.gssd"
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-. /etc/conf.d/$daemon_name.conf
-
-# Default mountpoint and options for rpc_pipefs filesystem
-[ -z "$PIPEFS_MOUNTPOINT" ] && PIPEFS_MOUNTPOINT="/var/lib/nfs/rpc_pipefs"
-[ -z "$PIPEFS_MOUNTOPTS" ] && PIPEFS_MOUNTOPTS="defaults"
-
-# Parse the fstab file, and determine whether we need idmapd and gssd. (The
-# /etc/conf.d/nfs-common settings, if any, will override our autodetection.)
-AUTO_NEED_IDMAPD=no
-AUTO_NEED_GSSD=no
-
-if [ -f /etc/fstab ]; then
- exec 9<&0 </etc/fstab
-
- while read DEV MTPT FSTYPE OPTS REST; do
- if [ "$FSTYPE" = "nfs4" ]; then
- AUTO_NEED_IDMAPD=yes
- fi
- case "$OPTS" in
- sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5i,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
- AUTO_NEED_GSSD=yes
- ;;
- esac
- done
-
- exec 0<&9 9<&-
-fi
-
-# We also need idmapd if we run an NFSv4 server. It's fairly difficult
-# to autodetect whether there are NFSv4 exports or not, and idmapd is not a
-# particularily heavy daemon, so we auto-enable it if we find an /etc/exports
-# file. This does not mean that there are NFSv4 or other mounts active (or
-# even that nfs-kernel-server is installed), but it matches what the "start"
-# condition in nfs-kernel-server's init script does, which has a value in
-# itself.
-if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' /etc/exports; then
- AUTO_NEED_IDMAPD=yes
-fi
-
-case "$NEED_STATD" in
- yes|no)
- ;;
- *)
- NEED_STATD=yes
- ;;
-esac
-
-case "$NEED_IDMAPD" in
- yes|no)
- ;;
- *)
- NEED_IDMAPD=$AUTO_NEED_IDMAPD
- ;;
-esac
-
-case "$NEED_GSSD" in
- yes|no)
- ;;
- *)
- NEED_GSSD=$AUTO_NEED_GSSD
- ;;
-esac
-
-do_modprobe() {
- if [ -x /sbin/modprobe -a -f /proc/modules ]; then
- modprobe -q "$1" || true
- fi
-}
-
-do_mount() {
- if ! grep -E "$1\$" /proc/filesystems &> /dev/null ; then
- return 1
- fi
-
- if grep -vw "$1" /proc/mounts &> /dev/null ; then
- if ! mountpoint -q "$2" ; then
- mount -t "$1" "$1" "$2" -o "$3"
- return
- fi
- fi
- return 0
-}
-
-do_umount() {
- if mountpoint -q "$1" ; then
- umount "$1"
- fi
- return 0
-}
-
-get_pid() {
- pidof -o %PPID "$1"
-}
-
-case "$1" in
- start)
- ck_daemon rpcbind && { echo -n "Start rpcbind first." >&2; stat_die; }
- rc=0
- if [ "$NEED_STATD" = yes ]; then
- stat_busy "Starting $STATD_DAEMON_NAME daemon"
- PID=$(get_pid $STATD)
- if [ -z "$PID" ]; then
- [ -f /var/run/$STATD_DAEMON_NAME.pid ] && rm -f /var/run/$STATD_DAEMON_NAME.pid
- # RUN
- $STATD $STATD_OPTS
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $STATD) > /var/run/$STATD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
- # Run sm-notify
- /usr/sbin/sm-notify $SMNOTIFY_OPTS
- fi
-
- if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then
- stat_busy "Mounting pipefs filesystem"
- do_modprobe sunrpc
- do_modprobe nfs
- do_modprobe nfsd
- do_mount rpc_pipefs "$PIPEFS_MOUNTPOINT" "$PIPEFS_MOUNTOPTS"
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- stat_done
- fi
-
- if [ "$NEED_IDMAPD" = yes ]; then
- stat_busy "Starting $IDMAPD_DAEMON_NAME daemon"
- PID=$(get_pid $IDMAPD)
- if [ -z "$PID" ]; then
- [ -f /var/run/$IDMAPD_DAEMON_NAME.pid ] && rm -f /var/run/$IDMAPD_DAEMON_NAME.pid
- # RUN
- $IDMAPD $IDMAPD_OPTS
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $IDMAPD) > /var/run/$IDMAPD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
- fi
-
- if [ "$NEED_GSSD" = yes ]; then
- do_modprobe rpcsec_gss_krb5
- stat_busy "Starting $GSSD_DAEMON_NAME daemon"
- PID=$(get_pid $GSSD)
- if [ -z "$PID" ]; then
- [ -f /var/run/$GSSD_DAEMON_NAME.pid ] && rm -f /var/run/$GSSD_DAEMON_NAME.pid
- # RUN
- $GSSD $GSSD_OPTS
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $GSSD) > /var/run/$GSSD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
- fi
- fi
-
- add_daemon $daemon_name
- ;;
-
- stop)
- rc=0
- if [ "$NEED_IDMAPD" = yes ] || [ "$NEED_GSSD" = yes ]; then
-
- if [ "$NEED_GSSD" = yes ]; then
- stat_busy "Stopping $GSSD_DAEMON_NAME daemon"
- PID=$(get_pid $GSSD)
- # KILL
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- rm -f /var/run/$GSSD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
- fi
-
- if [ "$NEED_IDMAPD" = yes ]; then
- stat_busy "Stopping $IDMAPD_DAEMON_NAME daemon"
- PID=$(get_pid $IDMAPD)
- # KILL
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- rm -f /var/run/$IDMAPD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
- fi
- do_umount "$PIPEFS_MOUNTPOINT" 2>/dev/null || true
- fi
-
- if [ "$NEED_STATD" = yes ]; then
- stat_busy "Stopping $STATD_DAEMON_NAME daemon"
- PID=$(get_pid $STATD)
- # KILL
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- rm -f /var/run/$STATD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
- fi
-
- rm_daemon $daemon_name
- ;;
-
- status)
- stat_busy "Checking $daemon_name status";
- ck_status $daemon_name
-
- if [ "$NEED_STATD" = yes ]; then
- stat_busy "Daemon $STATD_DAEMON_NAME running"
- PID=$(get_pid $STATD)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
- fi
-
- if [ "$NEED_GSSD" = yes ]; then
- stat_busy "Daemon $GSSD_DAEMON_NAME running"
- PID=$(get_pid $GSSD)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
- fi
-
- if [ "$NEED_IDMAPD" = yes ]; then
- stat_busy "Daemon $IDMAPD_DAEMON_NAME running"
- PID=$(get_pid $IDMAPD)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
- fi
- echo
- ;;
-
- restart)
- $0 stop
- sleep 3
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|status|restart}"
-esac
-exit 0
-
diff --git a/testing/nfs-utils/nfs-common.conf b/testing/nfs-utils/nfs-common.conf
deleted file mode 100644
index 12466b3e5..000000000
--- a/testing/nfs-utils/nfs-common.conf
+++ /dev/null
@@ -1,40 +0,0 @@
-# Parameters to be passed to nfs-common (nfs clients & server) init script.
-#
-
-# If you do not set values for the NEED_ options, they will be attempted
-# autodetected; this should be sufficient for most people. Valid alternatives
-# for the NEED_ options are "yes" and "no".
-
-# Do you want to start the statd daemon? It is not needed for NFSv4.
-NEED_STATD=""
-
-# Options to pass to rpc.statd.
-# See rpc.statd(8) for more details.
-# N.B. statd normally runs on both client and server, and run-time
-# options should be specified accordingly.
-# STATD_OPTS="-p 32765 -o 32766"
-STATD_OPTS=""
-
-# Options to pass to sm-notify
-# e.g. SMNOTIFY_OPTS="-p 32764"
-SMNOTIFY_OPTS=""
-
-# Do you want to start the idmapd daemon? It is only needed for NFSv4.
-NEED_IDMAPD=""
-
-# Options to pass to rpc.idmapd.
-# See rpc.idmapd(8) for more details.
-IDMAPD_OPTS=""
-
-# Do you want to start the gssd daemon? It is required for Kerberos mounts.
-NEED_GSSD=""
-
-# Options to pass to rpc.gssd.
-# See rpc.gssd(8) for more details.
-GSSD_OPTS=""
-
-# Where to mount rpc_pipefs filesystem; the default is "/var/lib/nfs/rpc_pipefs".
-PIPEFS_MOUNTPOINT=""
-
-# Options used to mount rpc_pipefs filesystem; the default is "defaults".
-PIPEFS_MOUNTOPTS=""
diff --git a/testing/nfs-utils/nfs-server b/testing/nfs-utils/nfs-server
deleted file mode 100644
index 6aa609d8c..000000000
--- a/testing/nfs-utils/nfs-server
+++ /dev/null
@@ -1,299 +0,0 @@
-#!/bin/bash
-
-daemon_name=nfs-server
-
-NFSD_COUNT=
-NFSD_OPTS=
-NEED_SVCGSSD=
-SVCGSSD_OPTS=
-MOUNTD_OPTS=
-PROCNFSD_MOUNTPOINT=
-PROCNFSD_MOUNTOPTS=
-
-# rpc.nfsd daemon & binary location
-NFSD_PROCESS_NAME=nfsd
-NFSD_DAEMON_NAME=rpc.nfsd
-NFSD="/usr/sbin/rpc.nfsd"
-
-# rpc.svcgssd daemon & binary location
-SVCGSSD_DAEMON_NAME=rpc.svcgssd
-SVCGSSD="/usr/sbin/rpc.svcgssd"
-
-# rpc.idmapd daemon & binary location
-IDMAPD_DAEMON_NAME=rpc.idmapd
-IDMAPD="/usr/sbin/rpc.idmapd"
-
-# rpc.mountd daemon & binary location
-MOUNTD_DAEMON_NAME=rpc.mountd
-MOUNTD="/usr/sbin/rpc.mountd"
-
-# exortfs binary location
-EXPORTFS="/usr/sbin/exportfs"
-
-. /etc/rc.conf
-. /etc/rc.d/functions
-. /etc/conf.d/$daemon_name.conf
-
-# Default number of nfsd servers
-[ -z "$NFSD_COUNT" ] && NFSD_COUNT=8
-
-# Default mountpoint and options for nfsd filesystem
-[ -z "$PROCNFSD_MOUNTPOINT" ] && PROCNFSD_MOUNTPOINT="/proc/fs/nfsd"
-[ -z "$PROCNFSD_MOUNTOPTS" ] && PROCNFSD_MOUNTOPTS="rw,nodev,noexec,nosuid"
-
-case "$NEED_SVCGSSD" in
- yes|no)
- ;;
- *)
- NEED_SVCGSSD=no
- ;;
-esac
-
-do_modprobe() {
- if [ -x /sbin/modprobe -a -f /proc/modules ]; then
- modprobe -q "$1" || true
- fi
-}
-
-do_mount() {
- if ! grep -E "$1\$" /proc/filesystems &> /dev/null ; then
- return 1
- fi
-
- if grep -vw "$1" /proc/mounts &> /dev/null ; then
- if ! mountpoint -q "$2" ; then
- mount -t "$1" "$1" "$2" -o "$3"
- return
- fi
- fi
- return 0
-}
-
-do_umount() {
- if mountpoint -q "$1" ; then
- umount "$1"
- fi
- return 0
-}
-
-get_pid() {
- pidof -o %PPID "$1"
-}
-
-case "$1" in
- start)
- ck_daemon nfs-common && { echo -n "Start nfs-common first." >&2; stat_die; }
- rc=0
- stat_busy "Mounting nfsd filesystem"
- do_modprobe nfsd
- do_mount nfsd "$PROCNFSD_MOUNTPOINT" "$PROCNFSD_MOUNTOPTS"
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- stat_done
- fi
-
- stat_busy "Exporting all directories"
- $EXPORTFS -r
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- stat_done
- fi
-
- stat_busy "Starting $NFSD_DAEMON_NAME daemon"
- PID=$(get_pid $NFSD_PROCESS_NAME)
- if [ -z "$PID" ]; then
- [ -f /var/run/$NFSD_DAEMON_NAME.pid ] && rm -f /var/run/$NFSD_DAEMON_NAME.pid
- # RUN
- $NFSD $NFSD_OPTS $NFSD_COUNT
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $NFSD_PROCESS_NAME) > /var/run/$NFSD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
-
- if [ "$NEED_SVCGSSD" = yes ]; then
- do_modprobe rpcsec_gss_krb5
- stat_busy "Starting $SVCGSSD_DAEMON_NAME daemon"
- PID=$(get_pid $SVCGSSD)
- if [ -z "$PID" ]; then
- [ -f /var/run/$SVCGSSD_DAEMON_NAME.pid ] && rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid
- # RUN
- $SVCGSSD $SVCGSSD_OPTS
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $SVCGSSD) > /var/run/$SVCGSSD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
- fi
-
- PID=$(get_pid $IDMAPD)
- [ ! -z "$PID" ] && kill -SIGHUP $IDMAPD_DAEMON_NAME &> /dev/null
-
- stat_busy "Starting $MOUNTD_DAEMON_NAME daemon"
- PID=$(get_pid $MOUNTD)
- if [ -z "$PID" ]; then
- [ -f /var/run/$MOUNTD_DAEMON_NAME.pid ] && rm -f /var/run/$MOUNTD_DAEMON_NAME.pid
- # RUN
- $MOUNTD $MOUNTD_OPTS
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- echo $(get_pid $MOUNTD) > /var/run/$MOUNTD_DAEMON_NAME.pid
- stat_done
- fi
- else
- stat_fail
- exit 1
- fi
-
- add_daemon $daemon_name
- ;;
-
- stop)
- rc=0
- stat_busy "Stopping $MOUNTD_DAEMON_NAME daemon"
- PID=$(get_pid $MOUNTD)
- # KILL
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- rm -f /var/run/$MOUNTD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
-
- if [ "$NEED_SVCGSSD" = yes ]; then
- stat_busy "Stopping $SVCGSSD_DAEMON_NAME daemon"
- PID=$(get_pid $SVCGSSD)
- # KILL
- [ ! -z "$PID" ] && kill $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- rm -f /var/run/$SVCGSSD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
- fi
-
- stat_busy "Stopping $NFSD_DAEMON_NAME daemon"
- PID=$(get_pid $NFSD_PROCESS_NAME)
- # KILL (SIGINT)
- [ ! -z "$PID" ] && kill -2 $PID &> /dev/null
- #
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- sleep 1
- PID=$(get_pid $NFSD_PROCESS_NAME)
- # KILL (KILL) - just to be sure
- [ ! -z "$PID" ] && kill -9 $PID &> /dev/null
- #
- rm -f /var/run/$NFSD_DAEMON_NAME.pid &> /dev/null
- stat_done
- fi
-
- stat_busy "Unexporting all directories"
- $EXPORTFS -au
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- stat_done
- fi
-
- # flush everything out of the kernels export table
- if mountpoint -q "$PROCNFSD_MOUNTPOINT" ; then
- $EXPORTFS -f
- fi
- do_umount "$PROCNFSD_MOUNTPOINT" 2>/dev/null || true
- rm_daemon $daemon_name
- ;;
-
- status)
- stat_busy "Checking $daemon_name status";
- ck_status $daemon_name
-
- stat_busy "Daemon $NFSD_DAEMON_NAME running"
- PID=$(get_pid $NFSD_PROCESS_NAME)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
-
- stat_busy "Daemon $MOUNTD_DAEMON_NAME running"
- PID=$(get_pid $MOUNTD)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
-
- if [ "$NEED_SVCGSSD" = yes ]; then
- stat_busy "Daemon $SVCGSSD_DAEMON_NAME running"
- PID=$(get_pid $SVCGSSD)
- if [ -z "$PID" ]; then
- stat_fail
- else
- stat_done
- fi
- fi
- echo
- ;;
-
- reload)
- rc=0
- stat_busy "Re-exporting all directories"
- $EXPORTFS -r
- rc=$(($rc+$?))
- if [ $rc -gt 0 ]; then
- stat_fail
- exit $rc
- else
- stat_done
- fi
- ;;
-
- restart)
- $0 stop
- sleep 3
- $0 start
- ;;
- *)
- echo "usage: $0 {start|stop|status|reload|restart}"
-esac
-exit 0
diff --git a/testing/nfs-utils/nfs-server.conf b/testing/nfs-utils/nfs-server.conf
deleted file mode 100644
index 581e26350..000000000
--- a/testing/nfs-utils/nfs-server.conf
+++ /dev/null
@@ -1,29 +0,0 @@
-# Parameters to be passed to nfs-server init script.
-#
-
-# Options to pass to rpc.nfsd.
-# See rpc.nfsd(8) for more details.
-NFSD_OPTS=""
-
-# Number of servers to start up; the default is 8 servers.
-NFSD_COUNT=""
-
-# Where to mount nfsd filesystem; the default is "/proc/fs/nfsd".
-PROCNFSD_MOUNTPOINT=""
-
-# Options used to mount nfsd filesystem; the default is "rw,nodev,noexec,nosuid".
-PROCNFSD_MOUNTOPTS=""
-
-# Options for rpc.mountd.
-# If you have a port-based firewall, you might want to set up
-# a fixed port here using the --port option.
-# See rpc.mountd(8) for more details.
-MOUNTD_OPTS=""
-
-# Do you want to start the svcgssd daemon? It is only required for Kerberos
-# exports. Valid alternatives are "yes" and "no"; the default is "no".
-NEED_SVCGSSD=""
-
-# Options to pass to rpc.svcgssd.
-# See rpc.svcgssd(8) for more details.
-SVCGSSD_OPTS=""
diff --git a/testing/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch b/testing/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch
deleted file mode 100644
index c9e60afc7..000000000
--- a/testing/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-ripped from Debian
-
---- nfs-utils-1.1.4/utils/mount/fstab.c
-+++ nfs-utils-1.1.4/utils/mount/fstab.c
-@@ -57,7 +57,7 @@ mtab_does_not_exist(void) {
- return var_mtab_does_not_exist;
- }
-
--static int
-+int
- mtab_is_a_symlink(void) {
- get_mtab_info();
- return var_mtab_is_a_symlink;
---- nfs-utils-1.1.4/utils/mount/fstab.h
-+++ nfs-utils-1.1.4/utils/mount/fstab.h
-@@ -7,6 +7,7 @@
- #define _PATH_FSTAB "/etc/fstab"
- #endif
-
-+int mtab_is_a_symlink(void);
- int mtab_is_writable(void);
- int mtab_does_not_exist(void);
- void reset_mtab_info(void);
---- nfs-utils-1.1.4/utils/mount/mount.c
-+++ nfs-utils-1.1.4/utils/mount/mount.c
-@@ -230,6 +230,13 @@ create_mtab (void) {
- int flags;
- mntFILE *mfp;
-
-+ /* Avoid writing if the mtab is a symlink to /proc/mounts, since
-+ that would create a file /proc/mounts in case the proc filesystem
-+ is not mounted, and the fchmod below would also fail. */
-+ if (mtab_is_a_symlink()) {
-+ return EX_SUCCESS;
-+ }
-+
- lock_mtab();
-
- mfp = nfs_setmntent (MOUNTED, "a+");
diff --git a/testing/nfs-utils/nfs-utils-1.1.4-no-exec.patch b/testing/nfs-utils/nfs-utils-1.1.4-no-exec.patch
deleted file mode 100644
index ea50a21d8..000000000
--- a/testing/nfs-utils/nfs-utils-1.1.4-no-exec.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-ripped from Debian
-
---- nfs-utils-1.1.2/utils/mount/mount.c
-+++ nfs-utils-1.1.2/utils/mount/mount.c
-@@ -381,10 +381,6 @@
- mount_error(NULL, mount_point, ENOTDIR);
- return 1;
- }
-- if (access(mount_point, X_OK) < 0) {
-- mount_error(NULL, mount_point, errno);
-- return 1;
-- }
-
- return 0;
- }
diff --git a/testing/nfs-utils/nfs-utils.conf b/testing/nfs-utils/nfs-utils.conf
deleted file mode 100644
index 33c97b838..000000000
--- a/testing/nfs-utils/nfs-utils.conf
+++ /dev/null
@@ -1 +0,0 @@
-nfs
diff --git a/testing/nfs-utils/nfs-utils.install b/testing/nfs-utils/nfs-utils.install
deleted file mode 100644
index 7dcdf9575..000000000
--- a/testing/nfs-utils/nfs-utils.install
+++ /dev/null
@@ -1,32 +0,0 @@
-## arg 1: the new package version
-post_install() {
-cat << 'EOM'
- ==> PLEASE NOTE:
- ==> Extended configuration options for NFS (clients & server) are available in
- ==> /etc/conf.d/nfs-common.conf and in /etc/conf.d/nfs-server.conf
- ==>
- ==> Please refer to http://wiki.archlinux.org/index.php/Nfs
- ==> for further information on NFS; for NFSv4, refer to
- ==> http://wiki.archlinux.org/index.php/NFSv4
-EOM
-}
-
-## arg 1: the new package version
-## arg 2: the old package version
-post_upgrade() {
- if [ "$(vercmp $2 1.2.0-2)" -lt 0 ]; then
-cat << 'EOM'
- ==> IMPORTANT NFS UTILS CHANGES:
- ==> This is a rather important upgrade, you are going to have to change config files.
- ==> /etc/rc.conf daemons changes:
- ==> Change portmap to rpcbind
- ==> Change nfslock to nfs-common
- ==> Change nfsd to nfs-server
- ==>
- ==> Extended configuration options for NFS (clients & server) are available in:
- ==> /etc/conf.d/nfs-common
- ==> /etc/conf.d/nfs-server
- ==> Please change them to your needs.
-EOM
- fi
-}
diff --git a/testing/nfs-utils/nfsd.service b/testing/nfs-utils/nfsd.service
deleted file mode 100644
index e5481c3d1..000000000
--- a/testing/nfs-utils/nfsd.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=NFS server
-After=rpcbind.service
-Requires=rpcbind.service
-
-[Service]
-Type=oneshot
-EnvironmentFile=/etc/conf.d/nfs-server.conf
-ExecStart=/usr/sbin/rpc.nfsd $NFSD_OPTS $NFSD_COUNT
-ExecStartPost=/usr/sbin/exportfs -a
-ExecStop=/usr/sbin/rpc.nfsd 0
-ExecStopPost=/usr/sbin/exportfs -a -u
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/proc-fs-nfsd.mount b/testing/nfs-utils/proc-fs-nfsd.mount
deleted file mode 100644
index f8664a8be..000000000
--- a/testing/nfs-utils/proc-fs-nfsd.mount
+++ /dev/null
@@ -1,8 +0,0 @@
-[Unit]
-Description=RPC Pipe File System
-DefaultDependencies=no
-
-[Mount]
-What=sunrpc
-Where=/proc/fs/nfsd
-Type=rpc_pipefs
diff --git a/testing/nfs-utils/rpc-gssd.service b/testing/nfs-utils/rpc-gssd.service
deleted file mode 100644
index 446864d18..000000000
--- a/testing/nfs-utils/rpc-gssd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=RPC GSS-API client-side daemon
-After=rpcbind.service var-lib-nfs-rpc_pipefs.mount
-Requires=rpcbind.service var-lib-nfs-rpc_pipefs.mount
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/conf.d/nfs-common.conf
-ExecStart=/usr/sbin/rpc.gssd $GSSD_OPTS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/rpc-idmapd.service b/testing/nfs-utils/rpc-idmapd.service
deleted file mode 100644
index 72cd26a93..000000000
--- a/testing/nfs-utils/rpc-idmapd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=NFSv4 ID-name mapping daemon
-After=var-lib-nfs-rpc_pipefs.mount nfsd.service
-Requires=var-lib-nfs-rpc_pipefs.mount
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/conf.d/nfs-common.conf
-ExecStart=/usr/sbin/rpc.idmapd $IDMAPD_OPTS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/rpc-mountd.service b/testing/nfs-utils/rpc-mountd.service
deleted file mode 100644
index edd8c851d..000000000
--- a/testing/nfs-utils/rpc-mountd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=NFS Mount Daemon
-After=rpcbind.service nfsd.service
-Requires=rpcbind.service nfsd.service
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/conf.d/nfs-server.conf
-ExecStart=/usr/sbin/rpc.mountd $MOUNTD_OPTS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/rpc-statd.service b/testing/nfs-utils/rpc-statd.service
deleted file mode 100644
index 983b4044f..000000000
--- a/testing/nfs-utils/rpc-statd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=NFSv2/3 Network Status Monitor Daemon
-After=rpcbind.service
-Requires=rpcbind.service
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/conf.d/nfs-common.conf
-ExecStart=/usr/sbin/rpc.statd $STATD_OPTS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/rpc-svcgssd.service b/testing/nfs-utils/rpc-svcgssd.service
deleted file mode 100644
index 8152e8338..000000000
--- a/testing/nfs-utils/rpc-svcgssd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=RPC GSS-API server-side daemon
-After=rpcbind.service
-Requires=rpcbind.service
-
-[Service]
-Type=forking
-EnvironmentFile=/etc/conf.d/nfs-server.conf
-ExecStart=/usr/sbin/rpc.svcgssd $SVCGSSD_OPTS
-
-[Install]
-WantedBy=multi-user.target
diff --git a/testing/nfs-utils/start-statd.patch b/testing/nfs-utils/start-statd.patch
deleted file mode 100644
index 5d73b6e35..000000000
--- a/testing/nfs-utils/start-statd.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- utils/statd/start-statd 2007-05-11 04:40:57.000000000 +0100
-+++ utils/statd/start-statd.new 2007-09-21 17:11:34.000000000 +0100
-@@ -1,9 +1,16 @@
--#!/bin/bash -p
-+#!/bin/sh
-+
-+# Original script provided by the NFS project
-+# Modified for Arch Linux by Tom Killian
-+
- # nfsmount calls this script when mounting a filesystem with locking
- # enabled, but when statd does not seem to be running (based on
- # /var/run/rpc.statd.pid).
- # It should run statd with whatever flags are apropriate for this
- # site.
--PATH=/sbin:/usr/sbin
--exec rpc.statd --no-notify
-+
-+# source application-specific settings
-+[ -f /etc/conf.d/nfs-common.conf ] && . /etc/conf.d/nfs-common.conf
-+
-+exec /usr/sbin/rpc.statd $STATD_OPTS
-
diff --git a/testing/nfs-utils/var-lib-nfs-rpc_pipefs.mount b/testing/nfs-utils/var-lib-nfs-rpc_pipefs.mount
deleted file mode 100644
index 4bd440f24..000000000
--- a/testing/nfs-utils/var-lib-nfs-rpc_pipefs.mount
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=RPC pipe filesystem
-
-[Mount]
-What=rpc_pipefs
-Where=/var/lib/nfs/rpc_pipefs
-Type=rpc_pipefs
diff --git a/~lukeshu/parabolaweb-git/PKGBUILD b/~lukeshu/parabolaweb-git/PKGBUILD
deleted file mode 100644
index 962b1c977..000000000
--- a/~lukeshu/parabolaweb-git/PKGBUILD
+++ /dev/null
@@ -1,37 +0,0 @@
-# Maintainer: Luke Shumaker <lukeshu@sbcglobal.net>
-# This does not follow normal package guidelines; it is not a normal package.
-
-pkgname=parabolaweb-git
-pkgver=20120228
-pkgrel=2
-pkgdesc="The Parabola website, fork of archweb"
-arch=('any')
-url="https://projects.parabolagnulinux.org/parabolaweb.git/"
-license=('GPL2')
-
-_requirements=https://projects.parabolagnulinux.org/parabolaweb.git/plain/requirements_prod.txt
-depends=('python2' 'git'
- `curl -s "$_requirements" | sed -r -e 's/.*/\L&/' -e 's/==/=/' \
- -e 's/^(south)/python-&/' \
- -e 's/^(markdown|psycopg2|pyinotify|pytz)/python2-&/'`)
-install=parabolaweb.install
-
-# These will make it install into /http/srv/web
-_install_dir=/srv/http
-_gitname=web
-
-_gitroot=https://projects.parabolagnulinux.org/parabolaweb.git
-_gitbranch="master"
-
-build() {
- sed -i \
- -e "s|^_install_dir=.*|_install_dir='$_install_dir'|" \
- -e "s|^_gitname=.*|_gitname='$_gitname'|" \
- -e "s|^_gitroot=.*|_gitroot='$_gitroot'|" \
- -e "s|^_gitbranch=.*|_gitbranch='$_gitbranch'|" \
- ../parabolaweb.install
-}
-
-package() {
- install -d "${pkgdir}/${_install_dir}"
-}
diff --git a/~lukeshu/parabolaweb-git/parabolaweb.install b/~lukeshu/parabolaweb-git/parabolaweb.install
deleted file mode 100644
index 53374ccc3..000000000
--- a/~lukeshu/parabolaweb-git/parabolaweb.install
+++ /dev/null
@@ -1,65 +0,0 @@
-# These will make it install into /http/srv/web
-_install_dir='/srv/http'
-_gitname='web'
-
-_gitroot='https://projects.parabolagnulinux.org/parabolaweb.git'
-_gitbranch='master'
-
-msg() {
- echo $@
-}
-
-_main() {
- set -e
- if [ ! -d "$_install_dir" ]; then
- mkdir "$_install_dir"
- fi
- cd "$_install_dir"
-
- msg "Connecting to GIT server...."
- if [ -d ${_gitname} ] ; then
- cd ${_gitname}
- git pull ${_gitroot}
- msg "The local files are updated."
- else
- git clone ${_gitroot} ${_gitname}
- cd ${_gitname}
- fi
- git checkout ${_gitbranch}
- msg "GIT checkout done or server timeout"
-
- msg "Checking configuration...."
- if [ ! -f local_settings.py ]; then
- cp local_settings.py.example local_settings.py.tmp
- $EDITOR local_settings.py.tmp
- mv local_settings.py.tmp local_settings.py
- msg "Creating database...."
- ./manage.py syncdb
- fi
-
- msg "Purging old .pyc files...."
- find . -name '*.pyc' -delete
-
- msg "Updating database...."
- ./manage.py migrate
- ./manage.py loaddata */fixtures/*.json
-
- msg "Checking media/admin_media symlink...."
- if [ ! -e media/admin-media ]; then
- rm media/admin_media
- ln -s /usr/lib/python2.7/site-packages/django/contrib/admin/media media/admin_media
- fi
-}
-
-# arg 1: the new package version
-post_install() {
- _main
-}
-
-# arg 1: the new package version
-# arg 2: the old package version
-post_upgrade() {
- _main
-}
-
-# vim:set ts=2 sw=2 et: