mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-13 04:22:58 +02:00
kernel: update to 4.9.16
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
This commit is contained in:
10
lfs/linux
10
lfs/linux
@@ -24,10 +24,10 @@
|
||||
|
||||
include Config
|
||||
|
||||
VER = 4.9.15
|
||||
VER = 4.9.16
|
||||
RPI_PATCHES = 3.14.79-grsec-ipfire1
|
||||
A7M_PATCHES = 3.14.79-grsec-ipfire1
|
||||
GRS_PATCHES = grsecurity-3.1-4.9.15-201703150049.patch.xz
|
||||
GRS_PATCHES = grsecurity-3.1-4.9.16-201703180820.patch.xz
|
||||
|
||||
|
||||
THISAPP = linux-$(VER)
|
||||
@@ -83,10 +83,10 @@ rpi-patches-$(RPI_PATCHES).patch.xz = $(URL_IPFIRE)/rpi-patches-$(RPI_PATCHES).
|
||||
arm7-multi-patches-$(A7M_PATCHES).patch.xz = $(URL_IPFIRE)/arm7-multi-patches-$(A7M_PATCHES).patch.xz
|
||||
$(GRS_PATCHES) = $(URL_IPFIRE)/$(GRS_PATCHES)
|
||||
|
||||
$(DL_FILE)_MD5 = 683f81bf0a9762f81c2aa7bc4b524b8c
|
||||
$(DL_FILE)_MD5 = f006558ef9fdcc5d5b46b047d5c710f9
|
||||
rpi-patches-$(RPI_PATCHES).patch.xz_MD5 = a02a7fd54c642c1e3578a00ed22f54f8
|
||||
arm7-multi-patches-$(A7M_PATCHES).patch.xz_MD5 = 6c3b11e51caa278dbeacd1e23c2b171b
|
||||
$(GRS_PATCHES)_MD5 = 100571a962edbbbcaa008ed390c0d622
|
||||
$(GRS_PATCHES)_MD5 = d558f2133aae6c1e989a55618ea2cac7
|
||||
|
||||
|
||||
install : $(TARGET)
|
||||
@@ -150,7 +150,7 @@ endif
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/mISDN-hfcusb-reportl1down.patch
|
||||
|
||||
# Add LED trigger
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8-ledtrig_netdev.patch
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.16-ledtrig_netdev.patch
|
||||
|
||||
# cs5535audio spams syslog if no ac97 was present (geos router)
|
||||
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/linux-4.9.8_cs5535audio_fix_logspam_on_geos.patch
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
diff -Naur linux-4.9.8.org/drivers/leds/trigger/Kconfig linux-4.9.8/drivers/leds/trigger/Kconfig
|
||||
--- linux-4.9.8.org/drivers/leds/trigger/Kconfig 2017-02-04 09:47:29.000000000 +0100
|
||||
+++ linux-4.9.8/drivers/leds/trigger/Kconfig 2017-02-09 16:58:20.280030084 +0100
|
||||
diff -Naur linux-4.9.16.org/drivers/leds/trigger/Kconfig linux-4.9.16/drivers/leds/trigger/Kconfig
|
||||
--- linux-4.9.16.org/drivers/leds/trigger/Kconfig 2017-03-18 12:15:30.000000000 +0100
|
||||
+++ linux-4.9.16/drivers/leds/trigger/Kconfig 2017-03-18 16:53:42.290859631 +0100
|
||||
@@ -126,4 +126,11 @@
|
||||
a different trigger.
|
||||
If unsure, say Y.
|
||||
@@ -13,10 +13,10 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/Kconfig linux-4.9.8/drivers/leds
|
||||
+ If unsure, say Y.
|
||||
+
|
||||
endif # LEDS_TRIGGERS
|
||||
diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/drivers/leds/trigger/ledtrig-netdev.c
|
||||
--- linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-4.9.8/drivers/leds/trigger/ledtrig-netdev.c 2017-02-09 16:58:20.280030084 +0100
|
||||
@@ -0,0 +1,438 @@
|
||||
diff -Naur linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c
|
||||
--- linux-4.9.16.org/drivers/leds/trigger/ledtrig-netdev.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ linux-4.9.16/drivers/leds/trigger/ledtrig-netdev.c 2017-03-18 16:53:44.280859607 +0100
|
||||
@@ -0,0 +1,444 @@
|
||||
+/*
|
||||
+ * LED Kernel Netdev Trigger
|
||||
+ *
|
||||
@@ -87,7 +87,7 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+#define MODE_RX 4
|
||||
+
|
||||
+struct led_netdev_data {
|
||||
+ rwlock_t lock;
|
||||
+ spinlock_t lock;
|
||||
+
|
||||
+ struct timer_list timer;
|
||||
+ struct notifier_block notifier;
|
||||
@@ -111,8 +111,6 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+
|
||||
+ if ((trigger_data->mode & (MODE_TX | MODE_RX)) != 0 && trigger_data->link_up)
|
||||
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
|
||||
+ else
|
||||
+ del_timer(&trigger_data->timer);
|
||||
+}
|
||||
+
|
||||
+static ssize_t led_device_name_show(struct device *dev,
|
||||
@@ -121,9 +119,9 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
|
||||
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
|
||||
+
|
||||
+ read_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ sprintf(buf, "%s\n", trigger_data->device_name);
|
||||
+ read_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ return strlen(buf) + 1;
|
||||
+}
|
||||
@@ -137,21 +135,25 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ if (size < 0 || size >= IFNAMSIZ)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+
|
||||
+ strcpy(trigger_data->device_name, buf);
|
||||
+ if (size > 0 && trigger_data->device_name[size-1] == '\n')
|
||||
+ trigger_data->device_name[size-1] = 0;
|
||||
+ trigger_data->link_up = 0;
|
||||
+ trigger_data->last_activity = 0;
|
||||
+
|
||||
+ if (trigger_data->device_name[0] != 0) {
|
||||
+ /* check for existing device to update from */
|
||||
+ trigger_data->net_dev = dev_get_by_name(&init_net, trigger_data->device_name);
|
||||
+ if (trigger_data->net_dev != NULL)
|
||||
+ trigger_data->link_up = (dev_get_flags(trigger_data->net_dev) & IFF_LOWER_UP) != 0;
|
||||
+ set_baseline_state(trigger_data); /* updates LEDs, may start timers */
|
||||
+ }
|
||||
+
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+ set_baseline_state(trigger_data);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ return size;
|
||||
+}
|
||||
+
|
||||
@@ -163,7 +165,7 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
|
||||
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
|
||||
+
|
||||
+ read_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ if (trigger_data->mode == 0) {
|
||||
+ strcpy(buf, "none\n");
|
||||
@@ -177,7 +179,7 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ strcat(buf, "\n");
|
||||
+ }
|
||||
+
|
||||
+ read_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ return strlen(buf)+1;
|
||||
+}
|
||||
@@ -218,10 +220,13 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ if (new_mode == -1)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+
|
||||
+ trigger_data->mode = new_mode;
|
||||
+
|
||||
+ set_baseline_state(trigger_data);
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ return size;
|
||||
+}
|
||||
@@ -234,9 +239,9 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ struct led_classdev *led_cdev = dev_get_drvdata(dev);
|
||||
+ struct led_netdev_data *trigger_data = led_cdev->trigger_data;
|
||||
+
|
||||
+ read_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ sprintf(buf, "%u\n", jiffies_to_msecs(trigger_data->interval));
|
||||
+ read_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ return strlen(buf) + 1;
|
||||
+}
|
||||
@@ -256,10 +261,14 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+
|
||||
+ /* impose some basic bounds on the timer interval */
|
||||
+ if (count == size && value >= 5 && value <= 10000) {
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+
|
||||
+ trigger_data->interval = msecs_to_jiffies(value);
|
||||
+
|
||||
+ set_baseline_state(trigger_data); /* resets timer */
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ ret = count;
|
||||
+ }
|
||||
+
|
||||
@@ -275,17 +284,20 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ struct net_device *dev = netdev_notifier_info_to_dev((struct netdev_notifier_info *) dv);
|
||||
+ struct led_netdev_data *trigger_data = container_of(nb, struct led_netdev_data, notifier);
|
||||
+
|
||||
+ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
|
||||
+ if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER && evt != NETDEV_CHANGENAME)
|
||||
+ return NOTIFY_DONE;
|
||||
+
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ if (strcmp(dev->name, trigger_data->device_name))
|
||||
+ goto done;
|
||||
+
|
||||
+ if (evt == NETDEV_REGISTER) {
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+
|
||||
+ if (evt == NETDEV_REGISTER || evt == NETDEV_CHANGENAME) {
|
||||
+ if (trigger_data->net_dev != NULL)
|
||||
+ dev_put(trigger_data->net_dev);
|
||||
+
|
||||
+ dev_hold(dev);
|
||||
+ trigger_data->net_dev = dev;
|
||||
+ trigger_data->link_up = 0;
|
||||
@@ -304,7 +316,7 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ set_baseline_state(trigger_data);
|
||||
+
|
||||
+done:
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+ return NOTIFY_DONE;
|
||||
+}
|
||||
+
|
||||
@@ -316,12 +328,10 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ unsigned new_activity;
|
||||
+ struct rtnl_link_stats64 temp;
|
||||
+
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+
|
||||
+ if (!trigger_data->link_up || !trigger_data->net_dev || (trigger_data->mode & (MODE_TX | MODE_RX)) == 0) {
|
||||
+ /* we don't need to do timer work, just reflect link state. */
|
||||
+ led_set_brightness(trigger_data->led_cdev, ((trigger_data->mode & MODE_LINK) != 0 && trigger_data->link_up) ? LED_FULL : LED_OFF);
|
||||
+ goto no_restart;
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ dev_stats = dev_get_stats(trigger_data->net_dev, &temp);
|
||||
@@ -353,9 +363,6 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+
|
||||
+ trigger_data->last_activity = new_activity;
|
||||
+ mod_timer(&trigger_data->timer, jiffies + trigger_data->interval);
|
||||
+
|
||||
+no_restart:
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+}
|
||||
+
|
||||
+static void netdev_trig_activate(struct led_classdev *led_cdev)
|
||||
@@ -367,7 +374,7 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ if (!trigger_data)
|
||||
+ return;
|
||||
+
|
||||
+ rwlock_init(&trigger_data->lock);
|
||||
+ spin_lock_init(&trigger_data->lock);
|
||||
+
|
||||
+ trigger_data->notifier.notifier_call = netdev_trig_notify;
|
||||
+ trigger_data->notifier.priority = 10;
|
||||
@@ -418,16 +425,15 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+ device_remove_file(led_cdev->dev, &dev_attr_mode);
|
||||
+ device_remove_file(led_cdev->dev, &dev_attr_interval);
|
||||
+
|
||||
+ write_lock(&trigger_data->lock);
|
||||
+ spin_lock_bh(&trigger_data->lock);
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+
|
||||
+ if (trigger_data->net_dev) {
|
||||
+ dev_put(trigger_data->net_dev);
|
||||
+ trigger_data->net_dev = NULL;
|
||||
+ }
|
||||
+
|
||||
+ write_unlock(&trigger_data->lock);
|
||||
+
|
||||
+ del_timer_sync(&trigger_data->timer);
|
||||
+ spin_unlock_bh(&trigger_data->lock);
|
||||
+
|
||||
+ kfree(trigger_data);
|
||||
+ }
|
||||
@@ -455,9 +461,9 @@ diff -Naur linux-4.9.8.org/drivers/leds/trigger/ledtrig-netdev.c linux-4.9.8/dri
|
||||
+MODULE_AUTHOR("Oliver Jowett <oliver@opencloud.com>");
|
||||
+MODULE_DESCRIPTION("Netdev LED trigger");
|
||||
+MODULE_LICENSE("GPL");
|
||||
diff -Naur linux-4.9.8.org/drivers/leds/trigger/Makefile linux-4.9.8/drivers/leds/trigger/Makefile
|
||||
--- linux-4.9.8.org/drivers/leds/trigger/Makefile 2017-02-04 09:47:29.000000000 +0100
|
||||
+++ linux-4.9.8/drivers/leds/trigger/Makefile 2017-02-09 17:00:13.303367332 +0100
|
||||
diff -Naur linux-4.9.16.org/drivers/leds/trigger/Makefile linux-4.9.16/drivers/leds/trigger/Makefile
|
||||
--- linux-4.9.16.org/drivers/leds/trigger/Makefile 2017-03-18 12:15:30.000000000 +0100
|
||||
+++ linux-4.9.16/drivers/leds/trigger/Makefile 2017-03-18 16:53:44.280859607 +0100
|
||||
@@ -10,3 +10,4 @@
|
||||
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_CAMERA) += ledtrig-camera.o
|
||||
Reference in New Issue
Block a user