summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch6
-rw-r--r--libre/linux-libre/0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch311
-rw-r--r--libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch8
-rw-r--r--libre/linux-libre/0003-SMILE-Plug-device-tree-file.patch8
-rw-r--r--libre/linux-libre/0004-fix-mvsdio-eMMC-timing.patch6
-rw-r--r--libre/linux-libre/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch7
-rw-r--r--libre/linux-libre/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch6
-rw-r--r--libre/linux-libre/0007-set-default-cubietruck-led-triggers.patch6
-rw-r--r--libre/linux-libre/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch6
-rw-r--r--libre/linux-libre/0009-drm-armada-tracing-fix.patch6
-rw-r--r--libre/linux-libre/0010-disable-USB3-port-on-ODROID-XU.patch27
-rw-r--r--libre/linux-libre/PKGBUILD38
-rw-r--r--libre/linux-libre/config.armv7h4
13 files changed, 393 insertions, 46 deletions
diff --git a/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch b/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
index d8af5cd53..9581d071b 100644
--- a/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
+++ b/libre/linux-libre/0001-ARM-atags-add-support-for-Marvell-s-u-boot.patch
@@ -1,7 +1,7 @@
-From b9f6d275e5af76eb4e32beb66480e8f53a7d1685 Mon Sep 17 00:00:00 2001
+From 2a2ab2b8ed60e043da32ddac674d7c58a63c1c8f Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@xxxxxx>
Date: Sun, 2 Dec 2012 19:59:28 +0100
-Subject: [PATCH 1/9] ARM: atags: add support for Marvell's u-boot
+Subject: [PATCH 01/10] ARM: atags: add support for Marvell's u-boot
Marvell uses a specific atag in its u-boot which includes among other
information the MAC addresses for up to 4 network interfaces.
@@ -47,5 +47,5 @@ index 979ff4016404..d1d0c1950fa4 100644
};
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch b/libre/linux-libre/0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch
new file mode 100644
index 000000000..0c13c9867
--- /dev/null
+++ b/libre/linux-libre/0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch
@@ -0,0 +1,311 @@
+>From 1dea7a8061ad9212f4464464a80d0dcd477eceab Mon Sep 17 00:00:00 2001
+From: Alexander Popov <alex.popov () linux com>
+Date: Tue, 28 Feb 2017 19:28:54 +0300
+Subject: [PATCH 1/1] tty: n_hdlc: get rid of racy n_hdlc.tbuf
+
+Currently N_HDLC line discipline uses a self-made singly linked list for
+data buffers and has n_hdlc.tbuf pointer for buffer retransmitting after
+an error.
+
+The commit be10eb7589337e5defbe214dae038a53dd21add8
+("tty: n_hdlc add buffer flushing") introduced racy access to n_hdlc.tbuf.
+After tx error concurrent flush_tx_queue() and n_hdlc_send_frames() can put
+one data buffer to tx_free_buf_list twice. That causes double free in
+n_hdlc_release().
+
+Let's use standard kernel linked list and get rid of n_hdlc.tbuf:
+in case of tx error put current data buffer after the head of tx_buf_list.
+
+Signed-off-by: Alexander Popov <alex.popov () linux com>
+---
+ drivers/tty/n_hdlc.c | 132 +++++++++++++++++++++++++++------------------------
+ 1 file changed, 69 insertions(+), 63 deletions(-)
+
+diff --git a/drivers/tty/n_hdlc.c b/drivers/tty/n_hdlc.c
+index eb27883..728c824 100644
+--- a/drivers/tty/n_hdlc.c
++++ b/drivers/tty/n_hdlc.c
+@@ -114,7 +114,7 @@
+ #define DEFAULT_TX_BUF_COUNT 3
+
+ struct n_hdlc_buf {
+- struct n_hdlc_buf *link;
++ struct list_head list_item;
+ int count;
+ char buf[1];
+ };
+@@ -122,8 +122,7 @@ struct n_hdlc_buf {
+ #define N_HDLC_BUF_SIZE (sizeof(struct n_hdlc_buf) + maxframe)
+
+ struct n_hdlc_buf_list {
+- struct n_hdlc_buf *head;
+- struct n_hdlc_buf *tail;
++ struct list_head list;
+ int count;
+ spinlock_t spinlock;
+ };
+@@ -136,7 +135,6 @@ struct n_hdlc_buf_list {
+ * @backup_tty - TTY to use if tty gets closed
+ * @tbusy - reentrancy flag for tx wakeup code
+ * @woke_up - FIXME: describe this field
+- * @tbuf - currently transmitting tx buffer
+ * @tx_buf_list - list of pending transmit frame buffers
+ * @rx_buf_list - list of received frame buffers
+ * @tx_free_buf_list - list unused transmit frame buffers
+@@ -149,7 +147,6 @@ struct n_hdlc {
+ struct tty_struct *backup_tty;
+ int tbusy;
+ int woke_up;
+- struct n_hdlc_buf *tbuf;
+ struct n_hdlc_buf_list tx_buf_list;
+ struct n_hdlc_buf_list rx_buf_list;
+ struct n_hdlc_buf_list tx_free_buf_list;
+@@ -159,6 +156,8 @@ struct n_hdlc {
+ /*
+ * HDLC buffer list manipulation functions
+ */
++static void n_hdlc_buf_return(struct n_hdlc_buf_list *buf_list,
++ struct n_hdlc_buf *buf);
+ static void n_hdlc_buf_put(struct n_hdlc_buf_list *list,
+ struct n_hdlc_buf *buf);
+ static struct n_hdlc_buf *n_hdlc_buf_get(struct n_hdlc_buf_list *list);
+@@ -208,16 +207,9 @@ static void flush_tx_queue(struct tty_struct *tty)
+ {
+ struct n_hdlc *n_hdlc = tty2n_hdlc(tty);
+ struct n_hdlc_buf *buf;
+- unsigned long flags;
+
+ while ((buf = n_hdlc_buf_get(&n_hdlc->tx_buf_list)))
+ n_hdlc_buf_put(&n_hdlc->tx_free_buf_list, buf);
+- spin_lock_irqsave(&n_hdlc->tx_buf_list.spinlock, flags);
+- if (n_hdlc->tbuf) {
+- n_hdlc_buf_put(&n_hdlc->tx_free_buf_list, n_hdlc->tbuf);
+- n_hdlc->tbuf = NULL;
+- }
+- spin_unlock_irqrestore(&n_hdlc->tx_buf_list.spinlock, flags);
+ }
+
+ static struct tty_ldisc_ops n_hdlc_ldisc = {
+@@ -283,7 +275,6 @@ static void n_hdlc_release(struct n_hdlc *n_hdlc)
+ } else
+ break;
+ }
+- kfree(n_hdlc->tbuf);
+ kfree(n_hdlc);
+
+ } /* end of n_hdlc_release() */
+@@ -402,13 +393,7 @@ static void n_hdlc_send_frames(struct n_hdlc *n_hdlc, struct tty_struct *tty)
+ n_hdlc->woke_up = 0;
+ spin_unlock_irqrestore(&n_hdlc->tx_buf_list.spinlock, flags);
+
+- /* get current transmit buffer or get new transmit */
+- /* buffer from list of pending transmit buffers */
+-
+- tbuf = n_hdlc->tbuf;
+- if (!tbuf)
+- tbuf = n_hdlc_buf_get(&n_hdlc->tx_buf_list);
+-
++ tbuf = n_hdlc_buf_get(&n_hdlc->tx_buf_list);
+ while (tbuf) {
+ if (debuglevel >= DEBUG_LEVEL_INFO)
+ printk("%s(%d)sending frame %p, count=%d\n",
+@@ -420,7 +405,7 @@ static void n_hdlc_send_frames(struct n_hdlc *n_hdlc, struct tty_struct *tty)
+
+ /* rollback was possible and has been done */
+ if (actual == -ERESTARTSYS) {
+- n_hdlc->tbuf = tbuf;
++ n_hdlc_buf_return(&n_hdlc->tx_buf_list, tbuf);
+ break;
+ }
+ /* if transmit error, throw frame away by */
+@@ -435,10 +420,7 @@ static void n_hdlc_send_frames(struct n_hdlc *n_hdlc, struct tty_struct *tty)
+
+ /* free current transmit buffer */
+ n_hdlc_buf_put(&n_hdlc->tx_free_buf_list, tbuf);
+-
+- /* this tx buffer is done */
+- n_hdlc->tbuf = NULL;
+-
++
+ /* wait up sleeping writers */
+ wake_up_interruptible(&tty->write_wait);
+
+@@ -448,10 +430,12 @@ static void n_hdlc_send_frames(struct n_hdlc *n_hdlc, struct tty_struct *tty)
+ if (debuglevel >= DEBUG_LEVEL_INFO)
+ printk("%s(%d)frame %p pending\n",
+ __FILE__,__LINE__,tbuf);
+-
+- /* buffer not accepted by driver */
+- /* set this buffer as pending buffer */
+- n_hdlc->tbuf = tbuf;
++
++ /*
++ * the buffer was not accepted by driver,
++ * return it back into tx queue
++ */
++ n_hdlc_buf_return(&n_hdlc->tx_buf_list, tbuf);
+ break;
+ }
+ }
+@@ -749,7 +733,8 @@ static int n_hdlc_tty_ioctl(struct tty_struct *tty, struct file *file,
+ int error = 0;
+ int count;
+ unsigned long flags;
+-
++ struct n_hdlc_buf *buf = NULL;
++
+ if (debuglevel >= DEBUG_LEVEL_INFO)
+ printk("%s(%d)n_hdlc_tty_ioctl() called %d\n",
+ __FILE__,__LINE__,cmd);
+@@ -763,8 +748,10 @@ static int n_hdlc_tty_ioctl(struct tty_struct *tty, struct file *file,
+ /* report count of read data available */
+ /* in next available frame (if any) */
+ spin_lock_irqsave(&n_hdlc->rx_buf_list.spinlock,flags);
+- if (n_hdlc->rx_buf_list.head)
+- count = n_hdlc->rx_buf_list.head->count;
++ buf = list_first_entry_or_null(&n_hdlc->rx_buf_list.list,
++ struct n_hdlc_buf, list_item);
++ if (buf)
++ count = buf->count;
+ else
+ count = 0;
+ spin_unlock_irqrestore(&n_hdlc->rx_buf_list.spinlock,flags);
+@@ -776,8 +763,10 @@ static int n_hdlc_tty_ioctl(struct tty_struct *tty, struct file *file,
+ count = tty_chars_in_buffer(tty);
+ /* add size of next output frame in queue */
+ spin_lock_irqsave(&n_hdlc->tx_buf_list.spinlock,flags);
+- if (n_hdlc->tx_buf_list.head)
+- count += n_hdlc->tx_buf_list.head->count;
++ buf = list_first_entry_or_null(&n_hdlc->tx_buf_list.list,
++ struct n_hdlc_buf, list_item);
++ if (buf)
++ count += buf->count;
+ spin_unlock_irqrestore(&n_hdlc->tx_buf_list.spinlock,flags);
+ error = put_user(count, (int __user *)arg);
+ break;
+@@ -825,14 +814,14 @@ static unsigned int n_hdlc_tty_poll(struct tty_struct *tty, struct file *filp,
+ poll_wait(filp, &tty->write_wait, wait);
+
+ /* set bits for operations that won't block */
+- if (n_hdlc->rx_buf_list.head)
++ if (!list_empty(&n_hdlc->rx_buf_list.list))
+ mask |= POLLIN | POLLRDNORM; /* readable */
+ if (test_bit(TTY_OTHER_CLOSED, &tty->flags))
+ mask |= POLLHUP;
+ if (tty_hung_up_p(filp))
+ mask |= POLLHUP;
+ if (!tty_is_writelocked(tty) &&
+- n_hdlc->tx_free_buf_list.head)
++ !list_empty(&n_hdlc->tx_free_buf_list.list))
+ mask |= POLLOUT | POLLWRNORM; /* writable */
+ }
+ return mask;
+@@ -856,7 +845,12 @@ static struct n_hdlc *n_hdlc_alloc(void)
+ spin_lock_init(&n_hdlc->tx_free_buf_list.spinlock);
+ spin_lock_init(&n_hdlc->rx_buf_list.spinlock);
+ spin_lock_init(&n_hdlc->tx_buf_list.spinlock);
+-
++
++ INIT_LIST_HEAD(&n_hdlc->rx_free_buf_list.list);
++ INIT_LIST_HEAD(&n_hdlc->tx_free_buf_list.list);
++ INIT_LIST_HEAD(&n_hdlc->rx_buf_list.list);
++ INIT_LIST_HEAD(&n_hdlc->tx_buf_list.list);
++
+ /* allocate free rx buffer list */
+ for(i=0;i<DEFAULT_RX_BUF_COUNT;i++) {
+ buf = kmalloc(N_HDLC_BUF_SIZE, GFP_KERNEL);
+@@ -884,53 +878,65 @@ static struct n_hdlc *n_hdlc_alloc(void)
+ } /* end of n_hdlc_alloc() */
+
+ /**
++ * n_hdlc_buf_return - put the HDLC buffer after the head of the specified list
++ * @buf_list - pointer to the buffer list
++ * @buf - pointer to the buffer
++ */
++static void n_hdlc_buf_return(struct n_hdlc_buf_list *buf_list,
++ struct n_hdlc_buf *buf)
++{
++ unsigned long flags;
++
++ spin_lock_irqsave(&buf_list->spinlock, flags);
++
++ list_add(&buf->list_item, &buf_list->list);
++ buf_list->count++;
++
++ spin_unlock_irqrestore(&buf_list->spinlock, flags);
++}
++
++/**
+ * n_hdlc_buf_put - add specified HDLC buffer to tail of specified list
+- * @list - pointer to buffer list
++ * @buf_list - pointer to buffer list
+ * @buf - pointer to buffer
+ */
+-static void n_hdlc_buf_put(struct n_hdlc_buf_list *list,
++static void n_hdlc_buf_put(struct n_hdlc_buf_list *buf_list,
+ struct n_hdlc_buf *buf)
+ {
+ unsigned long flags;
+- spin_lock_irqsave(&list->spinlock,flags);
+-
+- buf->link=NULL;
+- if (list->tail)
+- list->tail->link = buf;
+- else
+- list->head = buf;
+- list->tail = buf;
+- (list->count)++;
+-
+- spin_unlock_irqrestore(&list->spinlock,flags);
+-
++
++ spin_lock_irqsave(&buf_list->spinlock, flags);
++
++ list_add_tail(&buf->list_item, &buf_list->list);
++ buf_list->count++;
++
++ spin_unlock_irqrestore(&buf_list->spinlock, flags);
+ } /* end of n_hdlc_buf_put() */
+
+ /**
+ * n_hdlc_buf_get - remove and return an HDLC buffer from list
+- * @list - pointer to HDLC buffer list
++ * @buf_list - pointer to HDLC buffer list
+ *
+ * Remove and return an HDLC buffer from the head of the specified HDLC buffer
+ * list.
+ * Returns a pointer to HDLC buffer if available, otherwise %NULL.
+ */
+-static struct n_hdlc_buf* n_hdlc_buf_get(struct n_hdlc_buf_list *list)
++static struct n_hdlc_buf *n_hdlc_buf_get(struct n_hdlc_buf_list *buf_list)
+ {
+ unsigned long flags;
+ struct n_hdlc_buf *buf;
+- spin_lock_irqsave(&list->spinlock,flags);
+-
+- buf = list->head;
++
++ spin_lock_irqsave(&buf_list->spinlock, flags);
++
++ buf = list_first_entry_or_null(&buf_list->list,
++ struct n_hdlc_buf, list_item);
+ if (buf) {
+- list->head = buf->link;
+- (list->count)--;
++ list_del(&buf->list_item);
++ buf_list->count--;
+ }
+- if (!list->head)
+- list->tail = NULL;
+-
+- spin_unlock_irqrestore(&list->spinlock,flags);
++
++ spin_unlock_irqrestore(&buf_list->spinlock, flags);
+ return buf;
+-
+ } /* end of n_hdlc_buf_get() */
+
+ static char hdlc_banner[] __initdata =
+--
+2.7.4
+
diff --git a/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch b/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
index ac44398c6..9f31aa580 100644
--- a/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
+++ b/libre/linux-libre/0002-ARM-atags-fdt-retrieve-MAC-addresses-from-Marvell-bo.patch
@@ -1,8 +1,8 @@
-From 3573189a2857cd66d248fb79e48a45ae70399c0b Mon Sep 17 00:00:00 2001
+From 2890deaac9ce485f0b20211872784b0071d82717 Mon Sep 17 00:00:00 2001
From: Willy Tarreau <w@xxxxxx>
Date: Sun, 2 Dec 2012 19:56:58 +0100
-Subject: [PATCH 2/9] ARM: atags/fdt: retrieve MAC addresses from Marvell boot
- loader
+Subject: [PATCH 02/10] ARM: atags/fdt: retrieve MAC addresses from Marvell
+ boot loader
The atags are parsed and if a Marvell atag is found, up to 4 MAC
addresses are extracted there and assigned to node aliases eth0..3
@@ -43,5 +43,5 @@ index 9448aa0c6686..ac7b6ae6c00f 100644
}
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0003-SMILE-Plug-device-tree-file.patch b/libre/linux-libre/0003-SMILE-Plug-device-tree-file.patch
index 931c95877..9ad4ac228 100644
--- a/libre/linux-libre/0003-SMILE-Plug-device-tree-file.patch
+++ b/libre/linux-libre/0003-SMILE-Plug-device-tree-file.patch
@@ -1,7 +1,7 @@
-From 94679e069c9def09906a6b5f85c58ebd981ff615 Mon Sep 17 00:00:00 2001
+From fcd4be4707777620a01f1b1097fdb8f93e4c1077 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 5 Sep 2014 15:41:19 -0600
-Subject: [PATCH 3/9] SMILE Plug device tree file
+Subject: [PATCH 03/10] SMILE Plug device tree file
This adds a dts file for the SMILE Plug, which only differs from the Mirabox
dts with the LED definitions.
@@ -14,7 +14,7 @@ Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
create mode 100644 arch/arm/boot/dts/armada-370-smileplug.dts
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index f10fe8526239..f00e858de082 100644
+index 01d178a2009f..85f6d6661443 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -935,6 +935,7 @@ dtb-$(CONFIG_MACH_ARMADA_370) += \
@@ -205,5 +205,5 @@ index 000000000000..d01308ab848b
+ };
+};
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0004-fix-mvsdio-eMMC-timing.patch b/libre/linux-libre/0004-fix-mvsdio-eMMC-timing.patch
index bd053eb6b..189d73b44 100644
--- a/libre/linux-libre/0004-fix-mvsdio-eMMC-timing.patch
+++ b/libre/linux-libre/0004-fix-mvsdio-eMMC-timing.patch
@@ -1,7 +1,7 @@
-From 4831d1d37e42c17f97ae238d6bbcfda7c8dac028 Mon Sep 17 00:00:00 2001
+From 14c522e0476341f7684cef8b1ad0c03a3e4509e6 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Fri, 5 Sep 2014 15:43:56 -0600
-Subject: [PATCH 4/9] fix mvsdio eMMC timing
+Subject: [PATCH 04/10] fix mvsdio eMMC timing
These changes from Globalscale change the MMC timing to allow the eMMC versions
of the Mirabox and SMILE Plug to work.
@@ -34,5 +34,5 @@ index 42296e55b9de..e5ce6d27ec82 100644
host->clock = ios->clock;
host->ns_per_clk = 1000000000 / (host->base_clock / (m+1));
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch b/libre/linux-libre/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
index 0434d0794..eb5f11b8b 100644
--- a/libre/linux-libre/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
+++ b/libre/linux-libre/0005-net-smsc95xx-Allow-mac-address-to-be-set-as-a-parame.patch
@@ -1,7 +1,8 @@
-From 079ecb4f368b983d08e7c19daaf64311b8814ee3 Mon Sep 17 00:00:00 2001
+From 92ba4f4447bc5ed008f449e2d44ed339df3f4d0f Mon Sep 17 00:00:00 2001
From: popcornmix <popcornmix@gmail.com>
Date: Tue, 18 Feb 2014 01:43:50 -0300
-Subject: [PATCH 5/9] net/smsc95xx: Allow mac address to be set as a parameter
+Subject: [PATCH 05/10] net/smsc95xx: Allow mac address to be set as a
+ parameter
---
drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++
@@ -91,5 +92,5 @@ index 831aa33d078a..03625547d794 100644
/* maybe the boot loader passed the MAC address in devicetree */
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch b/libre/linux-libre/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch
index 28e4ad8e8..ebf56d216 100644
--- a/libre/linux-libre/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch
+++ b/libre/linux-libre/0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch
@@ -1,7 +1,7 @@
-From f8ed0685d6606fe27a3e8fc8aa3744f17f9e1956 Mon Sep 17 00:00:00 2001
+From 73eeb8c53d5402e318c7414ca89197faacc82a7d Mon Sep 17 00:00:00 2001
From: dobatog <dobatog@gmail.com>
Date: Thu, 26 Feb 2015 12:32:27 +0100
-Subject: [PATCH 6/9] ARM: TLV320AIC23 SoC Audio Codec: Fix errors reported
+Subject: [PATCH 06/10] ARM: TLV320AIC23 SoC Audio Codec: Fix errors reported
related to input routing signals.
The following patch, based on stable v3.19, corrects the errors that are reported in the boot trace in reference to the Input Signals of the audio codec TLV320AIC23:
@@ -45,5 +45,5 @@ index 410cae0f2060..0bb8e2602d8e 100644
/* input mux */
{"Capture Source", "Line", "Line Input"},
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0007-set-default-cubietruck-led-triggers.patch b/libre/linux-libre/0007-set-default-cubietruck-led-triggers.patch
index a13f2e1f8..e4b8868be 100644
--- a/libre/linux-libre/0007-set-default-cubietruck-led-triggers.patch
+++ b/libre/linux-libre/0007-set-default-cubietruck-led-triggers.patch
@@ -1,7 +1,7 @@
-From 6a7d1d2fab44c1830903b7af1a8a844ce4925763 Mon Sep 17 00:00:00 2001
+From ab716cec125455302c0e09ce6709033933b618df Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Sat, 14 Feb 2015 12:32:27 +0100
-Subject: [PATCH 7/9] set default cubietruck led triggers
+Subject: [PATCH 07/10] set default cubietruck led triggers
Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
---
@@ -29,5 +29,5 @@ index 83f39b0362cb..15e9626ea81b 100644
};
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch b/libre/linux-libre/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
index 840572234..824c0b390 100644
--- a/libre/linux-libre/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
+++ b/libre/linux-libre/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch
@@ -1,7 +1,7 @@
-From 5bd43bf12a2258976be01fe1211de9ad4d8e9145 Mon Sep 17 00:00:00 2001
+From 357aaf663585092fc717d6bb8397b6ef8764a660 Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Thu, 11 Aug 2016 00:42:37 -0600
-Subject: [PATCH 8/9] exynos4412-odroid: set higher minimum buck2 regulator
+Subject: [PATCH 08/10] exynos4412-odroid: set higher minimum buck2 regulator
voltage
Set a higher minimum voltage to help reboot issue.
@@ -26,5 +26,5 @@ index 8aa19ba14436..8e2d94e3af72 100644
regulator-always-on;
regulator-boot-on;
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0009-drm-armada-tracing-fix.patch b/libre/linux-libre/0009-drm-armada-tracing-fix.patch
index 1b2a16069..c9e4e7958 100644
--- a/libre/linux-libre/0009-drm-armada-tracing-fix.patch
+++ b/libre/linux-libre/0009-drm-armada-tracing-fix.patch
@@ -1,7 +1,7 @@
-From 24b08faa09d097e432fe36817dce69335c63d412 Mon Sep 17 00:00:00 2001
+From a5f7ae6a9dc41c26bcc0d4e66f18c352435ba4eb Mon Sep 17 00:00:00 2001
From: Kevin Mihelich <kevin@archlinuxarm.org>
Date: Mon, 26 Dec 2016 12:56:09 -0700
-Subject: [PATCH 9/9] drm/armada tracing fix
+Subject: [PATCH 09/10] drm/armada tracing fix
https://lists.freedesktop.org/archives/dri-devel/2016-December/126212.html
---
@@ -19,5 +19,5 @@ index a18f156c8b66..64c0b4546fb2 100644
+
+CFLAGS_armada_trace.o := -I$(src)
--
-2.11.0
+2.11.1
diff --git a/libre/linux-libre/0010-disable-USB3-port-on-ODROID-XU.patch b/libre/linux-libre/0010-disable-USB3-port-on-ODROID-XU.patch
new file mode 100644
index 000000000..bb2be4c5d
--- /dev/null
+++ b/libre/linux-libre/0010-disable-USB3-port-on-ODROID-XU.patch
@@ -0,0 +1,27 @@
+From 891345676e0af18d5d809b8a810db56a363aaf3b Mon Sep 17 00:00:00 2001
+From: Kevin Mihelich <kevin@archlinuxarm.org>
+Date: Sat, 25 Feb 2017 19:39:51 -0700
+Subject: [PATCH 10/10] disable USB3 port on ODROID-XU
+
+Ports report over-current condition and are non-operable.
+
+Signed-off-by: Kevin Mihelich <kevin@archlinuxarm.org>
+---
+ arch/arm/boot/dts/exynos5410-odroidxu.dts | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/arch/arm/boot/dts/exynos5410-odroidxu.dts b/arch/arm/boot/dts/exynos5410-odroidxu.dts
+index c4de1353e5df..f80fa58995c5 100644
+--- a/arch/arm/boot/dts/exynos5410-odroidxu.dts
++++ b/arch/arm/boot/dts/exynos5410-odroidxu.dts
+@@ -630,6 +630,7 @@
+
+ &usbdrd_dwc3_0 {
+ dr_mode = "host";
++ status = "disabled";
+ };
+
+ &usbdrd_dwc3_1 {
+--
+2.11.1
+
diff --git a/libre/linux-libre/PKGBUILD b/libre/linux-libre/PKGBUILD
index 869c64453..88fc0673e 100644
--- a/libre/linux-libre/PKGBUILD
+++ b/libre/linux-libre/PKGBUILD
@@ -11,7 +11,7 @@
pkgbase=linux-libre # Build stock kernel
#pkgbase=linux-libre-custom # Build kernel with a different name
_pkgbasever=4.10-gnu
-_pkgver=4.10.1-gnu
+_pkgver=4.10.2-gnu
_replacesarchkernel=('linux%') # '%' gets replaced with _kernelname
_replacesoldkernels=() # '%' gets replaced with _kernelname
@@ -44,6 +44,7 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l
'99-linux.hook'
# standard config files for mkinitcpio ramdisk
'linux.preset'
+ '0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch'
'0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch'
'0002-fix-Atmel-maXTouch-touchscreen-support.patch'
# armv7h patches
@@ -57,10 +58,11 @@ source=("https://linux-libre.fsfla.org/pub/linux-libre/releases/${_pkgbasever}/l
'0006-ARM-TLV320AIC23-SoC-Audio-Codec-Fix-errors-reported-.patch'
'0007-set-default-cubietruck-led-triggers.patch'
'0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch'
- '0009-drm-armada-tracing-fix.patch')
+ '0009-drm-armada-tracing-fix.patch'
+ '0010-disable-USB3-port-on-ODROID-XU.patch')
sha512sums=('44d1774a1d43a15322297d351737fbcbf92c6f433266ce2b17587437d433562cf5811fdae48fafd5a8e00d18ed9ac2e1ad4b12a657f322eb234384316ad131e0'
'SKIP'
- '03669d17c68d1a845db36dcc953fd98450c692d97c4273c91ae17ad5e4ec395834f6320e4862ffe5fff7eecbe2ea5888cbe3c9c9093dd16fad8603db756b8053'
+ '02e518e8192f7b71dcb3724d1b9f4bc502d210387548a77a8edf6900281ccd13de55986382c9be00afacf0dc0ca2f13a70327be9230b1c93d95bc917cfd17643'
'SKIP'
'13cb5bc42542e7b8bb104d5f68253f6609e463b6799800418af33eb0272cc269aaa36163c3e6f0aacbdaaa1d05e2827a4a7c4a08a029238439ed08b89c564bb3'
'SKIP'
@@ -70,22 +72,24 @@ sha512sums=('44d1774a1d43a15322297d351737fbcbf92c6f433266ce2b17587437d433562cf58
'SKIP'
'9f402a1a61887d85966108446bbc71f9b98c44e09ed226ea21fd01edea992c55168b991ee8207b4635663a07d3df4babc379491eed65695440772e46a6dc015a'
'bc6b1208be9a939e4831e91c27df1553510e359b4915afb071b3816a97cde9c65f306f61a9bee0a624f6439c232b102e62572126e9e1d0cf31715dacfdaa85fc'
- 'd2159ac8a81de606b44bbf19ffe9f2af907bc71a88043f3b6bb1195b69ab6cb8c6fdda8c40b41a0c8764e44a82dd2ece4a702a236e20bf764d3b3f962fd7e5c3'
+ '82b94244d3c641921b0e04da28faba10bc6b04ce94258ad01174166ed9c99acced8895d979c120cacf9cc9fcad4e1d7f57c0af655316c73cc3b093f2fd48d890'
'd6faa67f3ef40052152254ae43fee031365d0b1524aa0718b659eb75afc21a3f79ea8d62d66ea311a800109bed545bc8f79e8752319cd378eef2cbd3a09aba22'
'2dc6b0ba8f7dbf19d2446c5c5f1823587de89f4e28e9595937dd51a87755099656f2acec50e3e2546ea633ad1bfd1c722e0c2b91eef1d609103d8abdc0a7cbaf'
+ '397fc751697cc4e2ceb7e6d854f5e7fc115ed8511df406ffe5d8f80afeec385ba64cd28c4666bb206612fdcd7a578b60ca6ff125c2138c615aee6135d86b0197'
'02af4dd2a007e41db0c63822c8ab3b80b5d25646af1906dc85d0ad9bb8bbf5236f8e381d7f91cf99ed4b0978c50aee37cb9567cdeef65b7ec3d91b882852b1af'
'b8fe56e14006ab866970ddbd501c054ae37186ddc065bb869cf7d18db8c0d455118d5bda3255fb66a0dde38b544655cfe9040ffe46e41d19830b47959b2fb168'
- '85983a22bf5aae49504523062bf73cd278862823df24b7f176915c4fbf5854d9bc3f512cce402accff04793f86f855c45a3264d77c5025af253a56a26eca267b'
+ '08f47087aa71d1aca8dc4d5b7bb28cff3a7bb99f5bd64fc47664d3927ef470e256d22018da0726c186d9f9d19711c91ae4f3333aa161a0b18c082b5b60e5d74d'
'SKIP'
- 'de2caaf68d817582f70b7382566108cdfd54557675172d88c0aef45a9bad9c2c4c2cbae4b4cd393a083f1f78563a05f7280dc8553f8f91cb214f88f0c4c3790c'
- '7815bb6eded4f0fd3cb6eac3849d6f69728d4e9f5ae83064d6c1f319a5771f49d5fafad3b62c68f5d5c1f8643202e8968866005c50d069904ff57ee6dd4ce39d'
- 'cb767339d5ad2844da971dd1c8f0eed26a2aee3c08747f7d116965872cba44abb73a393408fbec420933b1d4f4b9837d12100522c1b89a376a2defc6b470d971'
- '764d174fde06916986a46b274b63f8978ad2229eced9502a46cdb95bfe70e5e4e172b37002e19c44d1cf0b573a8c9f35b806b3f3c4d00aed6a64e41216d5a00f'
- '1e6682960231c653c8dbcc632620adbb3bb8aa6647a58b9d1f98446ae8829c216960732e71e24561ba4dffa24cd2f868bb59ed2c367ddf5f2b8b503fc20e56ba'
- '97cb0a576375bb4eed5f1328d1e61e912c3f7eed5f7c45e2d41a59f7f3429d23b267b3f37506dc52efa3a7f9de62fe59b629970bcc1e1a8b1ef74bf6e7e3196e'
- '7ce4d348c3cdf218dd9ded4884d7e5712b0d18bd17d897a2fc1a6507e776b66c8ead0018437c735e1080f2d4a114abb15bcf24a0d404937ada231d7c04a2814f'
- 'a62714d52cd7f7979e69d7f26974dec7dd5f133ed6fab3d56aa0b7b232ce7dbab0f6a0dbd69b2c424313a19a218d0e96433968709104be0796549c582090ec1a'
- 'cfb61d1e09aba91c956f187828219ef0e86cf29455e1d2fa905a2a68ba4619b16acc529a721cbd55efcd8dbf548da0df0d7afb705081b41bcebf7c2398505f2b')
+ 'dd4e2482d6e3d91d00e37e665933515a4fa876d39c036d639f21c48a09f03202f3dec0dbe04b7c60c4b7e1f49617b5f94ace688afacbe33dc6d6818c0c797031'
+ 'cf0a3061cef91c04fa5e6d50c4ee235f817cb97f6b7a77f42d42ada707e71bd9731dfafdfcf396e767362998acd8b98ad9942a989c2dd8457e57177c354ec7d2'
+ '6866b84fac93df7eb669f71ed0041270a5f7254bddf6e4f3de7820dbf5696f09eb3051843f7f48d9ae418487ed765b203eccf4bf399d0ca95061ba0399043839'
+ 'f41af76bbb6727fa415bb4e7e5da1896a5f01316354d5f34bc55b3f4451e571f2302c4e66c2b949bb330241d4187d507faba83b1584907d1b66a82a60a1c8923'
+ 'ddf31c7db4c873c258763ddff4419315af3d06dc28f14f8d48b0d99e35ecd953d02a992da414c8dd1b9fd9f2bb12580393a541a3064051ece1fa6e173fc52ba2'
+ 'df749d4d4f71b4514f526941af592cc11eec13214375e7c0088b84558b56508bf444ea70fb93a0c114a03cd4efd559ea816deb670064fa91f02c7b7f7483d57d'
+ 'd1c6d28d22724f9d3700f5d8350164ddba7e6f64980a8d25ebb7cbcffa83250125f337e91510a925deb10bc1e30ac999cb18f3427e051e00d82f5bbaf8a848ec'
+ 'd14cedaf275ea1337b18a75d72b7610cb96f982896542edc0a59306c10888d62594b8a36197e33d079e6d5a9b5d20f46892b96a2d3aab5258013f0e5991e3f9b'
+ '0a806db7df7761f5dc64b8a3b3860c6c9216cecfe135778f3019e51e1245bcc34980c6124a11447285b18e284547ffc57a4b2c1290b4dd91a55b0237a7007cc9'
+ 'c02d0e1d6b399c84323937a81b702fd3ac7c6f9e08254d1697858f829fd045ee33d5952d42eb22558c290efe7fd5d8fdd7695d8ef3526742a67052fb9e303ebe')
validpgpkeys=(
'474402C8C582DAFBE389C427BCB7CF877E7D47A7' # Alexandre Oliva
'C92BAA713B8D53D3CAE63FC9E6974752F9704456' # André Silva
@@ -127,6 +131,7 @@ prepare() {
patch -p1 -i "${srcdir}/0007-set-default-cubietruck-led-triggers.patch"
patch -p1 -i "${srcdir}/0008-exynos4412-odroid-set-higher-minimum-buck2-regulator.patch"
patch -p1 -i "${srcdir}/0009-drm-armada-tracing-fix.patch"
+ patch -p1 -i "${srcdir}/0010-disable-USB3-port-on-ODROID-XU.patch"
fi
# add freedo as boot logo
@@ -136,6 +141,9 @@ prepare() {
# add latest fixes from stable queue, if needed
# http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git
+ # patch for CVE-2017-2636
+ patch -p1 -i "${srcdir}/0001-tty-n_hdlc-get-rid-of-racy-n_hdlc_tbuf.patch"
+
# maintain the TTY over USB disconnects
# http://www.coreboot.org/EHCI_Gadget_Debug
patch -p1 -i "${srcdir}/0001-usb-serial-gadget-no-TTY-hangup-on-USB-disconnect-WI.patch"
@@ -360,7 +368,7 @@ _package-headers() {
# add objtool for external module building and enabled VALIDATION_STACK option
if [ -f tools/objtool/objtool ]; then
mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool"
- cp -a tools/objtool/objtool ${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool/
+ cp -a tools/objtool/objtool ${pkgdir}/usr/lib/modules/${_kernver}/build/tools/objtool/
fi
chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
diff --git a/libre/linux-libre/config.armv7h b/libre/linux-libre/config.armv7h
index 10dfad095..d2a4ca369 100644
--- a/libre/linux-libre/config.armv7h
+++ b/libre/linux-libre/config.armv7h
@@ -1,6 +1,6 @@
#
# Automatically generated file; DO NOT EDIT.
-# Linux/arm 4.10.0-gnu-1 Kernel Configuration
+# Linux/arm 4.10.2-gnu-1 Kernel Configuration
#
CONFIG_ARM=y
CONFIG_ARM_HAS_SG_CHAIN=y
@@ -3846,7 +3846,7 @@ CONFIG_GPIOLIB=y
CONFIG_OF_GPIO=y
CONFIG_GPIOLIB_IRQCHIP=y
# CONFIG_DEBUG_GPIO is not set
-# CONFIG_GPIO_SYSFS is not set
+CONFIG_GPIO_SYSFS=y
# CONFIG_GPIO_OF_HELPER is not set
CONFIG_GPIO_GENERIC=y
CONFIG_GPIO_MAX730X=m