mirror of
https://github.com/hak5/wifipineapple-openwrt.git
synced 2025-10-29 16:57:19 +00:00
@@ -2,9 +2,9 @@
|
||||
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .45
|
||||
LINUX_VERSION-3.18 = .71
|
||||
|
||||
LINUX_KERNEL_MD5SUM-3.18.45 = c527bae0aa1a5d6f3ebe31ad348c5339
|
||||
LINUX_KERNEL_MD5SUM-3.18.71 = 98875fe779041e89c37e51b0208011ea
|
||||
|
||||
ifdef KERNEL_PATCHVER
|
||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||
|
||||
@@ -10,8 +10,7 @@ then
|
||||
else
|
||||
cat << EOF
|
||||
=== IMPORTANT ============================
|
||||
Use 'passwd' to set your login password
|
||||
this will disable telnet and enable SSH
|
||||
Use 'passwd' to set your login password!
|
||||
------------------------------------------
|
||||
EOF
|
||||
fi
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#!/bin/sh
|
||||
# Copyright (C) 2006 OpenWrt.org
|
||||
# Copyright (C) 2006-2015 OpenWrt.org
|
||||
# Copyright (C) 2010 Vertical Communications
|
||||
|
||||
failsafe_netlogin () {
|
||||
telnetd -l /bin/login.sh <> /dev/null 2>&1
|
||||
dropbearkey -t rsa -s 1024 -f /tmp/dropbear_failsafe_host_key
|
||||
dropbear -r /tmp/dropbear_failsafe_host_key <> /dev/null 2>&1
|
||||
}
|
||||
|
||||
failsafe_shell() {
|
||||
|
||||
15
package/kernel/mac80211/patches/090-remove-cred.patch
Normal file
15
package/kernel/mac80211/patches/090-remove-cred.patch
Normal file
@@ -0,0 +1,15 @@
|
||||
This is only needed for kernel < 2.6.29 and conflicts with kernel 4.4.42
|
||||
|
||||
--- a/backport-include/linux/cred.h
|
||||
+++ /dev/null
|
||||
@@ -1,10 +0,0 @@
|
||||
-#ifndef __BACKPORT_LINUX_CRED_H
|
||||
-#define __BACKPORT_LINUX_CRED_H
|
||||
-#include_next <linux/cred.h>
|
||||
-#include <linux/version.h>
|
||||
-
|
||||
-#ifndef current_user_ns
|
||||
-#define current_user_ns() (current->nsproxy->user_ns)
|
||||
-#endif
|
||||
-
|
||||
-#endif /* __BACKPORT_LINUX_CRED_H */
|
||||
@@ -8,12 +8,12 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dnsmasq
|
||||
PKG_VERSION:=2.73
|
||||
PKG_VERSION:=2.77
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
|
||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
|
||||
PKG_MD5SUM:=b8bfe96d22945c8cf4466826ba9b21bd
|
||||
PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq/
|
||||
PKG_MD5SUM:=5b973fea8e66e76a0e6bb44adefc6f9b
|
||||
|
||||
PKG_LICENSE:=GPL-2.0
|
||||
PKG_LICENSE_FILES:=COPYING
|
||||
@@ -24,6 +24,7 @@ PKG_INSTALL:=1
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6 \
|
||||
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dnssec \
|
||||
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_noid \
|
||||
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_auth \
|
||||
CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_ipset
|
||||
|
||||
@@ -50,7 +51,7 @@ endef
|
||||
|
||||
define Package/dnsmasq-full
|
||||
$(call Package/dnsmasq/Default)
|
||||
TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPset enabled by default)
|
||||
TITLE += (with DNSSEC, DHCPv6, Auth DNS, IPset, NO_ID enabled by default)
|
||||
DEPENDS:=+PACKAGE_dnsmasq_full_dnssec:libnettle \
|
||||
+PACKAGE_dnsmasq_full_dhcpv6:kmod-ipv6 \
|
||||
+PACKAGE_dnsmasq_full_ipset:kmod-ipt-ipset
|
||||
@@ -70,8 +71,8 @@ endef
|
||||
define Package/dnsmasq-full/description
|
||||
$(call Package/dnsmasq/description)
|
||||
|
||||
This is a fully configurable variant with DHCPv6, DNSSEC, Authroitative DNS and
|
||||
IPset support enabled by default.
|
||||
This is a fully configurable variant with DHCPv6, DNSSEC, Authoritative DNS and
|
||||
IPset, NO_ID support enabled by default.
|
||||
endef
|
||||
|
||||
define Package/dnsmasq/conffiles
|
||||
@@ -88,6 +89,9 @@ define Package/dnsmasq-full/config
|
||||
config PACKAGE_dnsmasq_full_dnssec
|
||||
bool "Build with DNSSEC support."
|
||||
default y
|
||||
config PACKAGE_dnsmasq_full_noid
|
||||
bool "Build with NO_ID. (hide *.bind pseudo domain)"
|
||||
default y
|
||||
config PACKAGE_dnsmasq_full_auth
|
||||
bool "Build with the facility to act as an authoritative DNS server."
|
||||
default y
|
||||
@@ -113,10 +117,11 @@ ifeq ($(BUILD_VARIANT),full)
|
||||
COPTS += $(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dhcpv6),,-DNO_DHCP6) \
|
||||
$(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_dnssec),-DHAVE_DNSSEC) \
|
||||
$(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_auth),,-DNO_AUTH) \
|
||||
$(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_noid),-DNO_ID,) \
|
||||
$(if $(CONFIG_PACKAGE_dnsmasq_$(BUILD_VARIANT)_ipset),,-DNO_IPSET)
|
||||
COPTS += $(if $(CONFIG_LIBNETTLE_MINI),-DNO_GMP,)
|
||||
else
|
||||
COPTS += -DNO_AUTH -DNO_IPSET
|
||||
COPTS += -DNO_AUTH -DNO_IPSET -DNO_ID
|
||||
endif
|
||||
|
||||
MAKE_FLAGS := \
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
From 38af9b1ac3242a4128e88069c495024caa565f0e Mon Sep 17 00:00:00 2001
|
||||
From: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
|
||||
Date: Tue, 29 Aug 2017 12:35:40 +0100
|
||||
Subject: [PATCH] forward.c: fix CVE-2017-13704
|
||||
|
||||
Fix SIGSEGV in rfc1035.c answer_request() line 1228 where memset()
|
||||
is called with header & limit pointing at the same address and thus
|
||||
tries to clear memory from before the buffer begins.
|
||||
|
||||
answer_request() is called with an invalid edns packet size provided by
|
||||
the client. Ensure the udp_size provided by the client is bounded by
|
||||
512 and configured maximum as per RFC 6891 6.2.3 "Values lower than 512
|
||||
MUST be treated as equal to 512"
|
||||
|
||||
The client that exposed the problem provided a payload udp size of 0.
|
||||
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
|
||||
---
|
||||
src/forward.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/src/forward.c b/src/forward.c
|
||||
index f22556a..62c5a5a 100644
|
||||
--- a/src/forward.c
|
||||
+++ b/src/forward.c
|
||||
@@ -1408,6 +1408,8 @@ void receive_query(struct listener *listen, time_t now)
|
||||
defaults to 512 */
|
||||
if (udp_size > daemon->edns_pktsz)
|
||||
udp_size = daemon->edns_pktsz;
|
||||
+ if (udp_size < 512)
|
||||
+ udp_size = 512; /* RFC 6891 6.2.3 */
|
||||
}
|
||||
|
||||
#ifdef HAVE_AUTH
|
||||
--
|
||||
2.7.4
|
||||
|
||||
@@ -1,47 +0,0 @@
|
||||
--- a/src/dhcp.c
|
||||
+++ b/src/dhcp.c
|
||||
@@ -146,7 +146,7 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
struct iovec iov;
|
||||
ssize_t sz;
|
||||
int iface_index = 0, unicast_dest = 0, is_inform = 0;
|
||||
- struct in_addr iface_addr;
|
||||
+ struct in_addr iface_addr, *addrp = NULL;
|
||||
struct iface_param parm;
|
||||
#ifdef HAVE_LINUX_NETWORK
|
||||
struct arpreq arp_req;
|
||||
@@ -272,11 +272,9 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
{
|
||||
ifr.ifr_addr.sa_family = AF_INET;
|
||||
if (ioctl(daemon->dhcpfd, SIOCGIFADDR, &ifr) != -1 )
|
||||
- iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
|
||||
- else
|
||||
{
|
||||
- my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
|
||||
- return;
|
||||
+ addrp = &iface_addr;
|
||||
+ iface_addr = ((struct sockaddr_in *) &ifr.ifr_addr)->sin_addr;
|
||||
}
|
||||
|
||||
for (tmp = daemon->dhcp_except; tmp; tmp = tmp->next)
|
||||
@@ -295,7 +293,7 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
parm.relay_local.s_addr = 0;
|
||||
parm.ind = iface_index;
|
||||
|
||||
- if (!iface_check(AF_INET, (struct all_addr *)&iface_addr, ifr.ifr_name, NULL))
|
||||
+ if (!iface_check(AF_INET, (struct all_addr *)addrp, ifr.ifr_name, NULL))
|
||||
{
|
||||
/* If we failed to match the primary address of the interface, see if we've got a --listen-address
|
||||
for a secondary */
|
||||
@@ -315,6 +313,12 @@ void dhcp_packet(time_t now, int pxe_fd)
|
||||
complete_context(match.addr, iface_index, NULL, match.netmask, match.broadcast, &parm);
|
||||
}
|
||||
|
||||
+ if (!addrp)
|
||||
+ {
|
||||
+ my_syslog(MS_DHCP | LOG_WARNING, _("DHCP packet received on %s which has no address"), ifr.ifr_name);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (!iface_enumerate(AF_INET, &parm, complete_context))
|
||||
return;
|
||||
|
||||
@@ -44,67 +44,22 @@
|
||||
(buffer = safe_malloc(BUFF_SZ)) &&
|
||||
(ipset_sock = socket(AF_NETLINK, SOCK_RAW, NETLINK_NETFILTER)) != -1 &&
|
||||
(bind(ipset_sock, (struct sockaddr *)&snl, sizeof(snl)) != -1))
|
||||
@@ -168,62 +149,16 @@ static int new_add_to_ipset(const char *
|
||||
}
|
||||
|
||||
|
||||
-static int old_add_to_ipset(const char *setname, const struct all_addr *ipaddr, int remove)
|
||||
-{
|
||||
- socklen_t size;
|
||||
- struct ip_set_req_adt_get {
|
||||
- unsigned op;
|
||||
- unsigned version;
|
||||
- union {
|
||||
- char name[IPSET_MAXNAMELEN];
|
||||
- uint16_t index;
|
||||
- } set;
|
||||
- char typename[IPSET_MAXNAMELEN];
|
||||
- } req_adt_get;
|
||||
- struct ip_set_req_adt {
|
||||
- unsigned op;
|
||||
- uint16_t index;
|
||||
- uint32_t ip;
|
||||
- } req_adt;
|
||||
-
|
||||
- if (strlen(setname) >= sizeof(req_adt_get.set.name))
|
||||
- {
|
||||
- errno = ENAMETOOLONG;
|
||||
- return -1;
|
||||
- }
|
||||
-
|
||||
- req_adt_get.op = 0x10;
|
||||
- req_adt_get.version = 3;
|
||||
- strcpy(req_adt_get.set.name, setname);
|
||||
- size = sizeof(req_adt_get);
|
||||
- if (getsockopt(ipset_sock, SOL_IP, 83, &req_adt_get, &size) < 0)
|
||||
- return -1;
|
||||
- req_adt.op = remove ? 0x102 : 0x101;
|
||||
- req_adt.index = req_adt_get.set.index;
|
||||
- req_adt.ip = ntohl(ipaddr->addr.addr4.s_addr);
|
||||
- if (setsockopt(ipset_sock, SOL_IP, 83, &req_adt, sizeof(req_adt)) < 0)
|
||||
- return -1;
|
||||
-
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-
|
||||
int add_to_ipset(const char *setname, const struct all_addr *ipaddr, int flags, int remove)
|
||||
{
|
||||
int af = AF_INET;
|
||||
|
||||
#ifdef HAVE_IPV6
|
||||
@@ -217,17 +198,10 @@ int add_to_ipset(const char *setname, co
|
||||
if (flags & F_IPV6)
|
||||
- {
|
||||
{
|
||||
af = AF_INET6;
|
||||
- /* old method only supports IPv4 */
|
||||
- if (old_kernel)
|
||||
- return -1;
|
||||
- }
|
||||
- {
|
||||
- errno = EAFNOSUPPORT ;
|
||||
- ret = -1;
|
||||
- }
|
||||
}
|
||||
#endif
|
||||
|
||||
- return old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove);
|
||||
+ return new_add_to_ipset(setname, ipaddr, af, remove);
|
||||
}
|
||||
- if (ret != -1)
|
||||
- ret = old_kernel ? old_add_to_ipset(setname, ipaddr, remove) : new_add_to_ipset(setname, ipaddr, af, remove);
|
||||
+ ret = new_add_to_ipset(setname, ipaddr, af, remove);
|
||||
|
||||
#endif
|
||||
if (ret == -1)
|
||||
my_syslog(LOG_ERR, _("failed to update ipset %s: %s"), setname, strerror(errno));
|
||||
|
||||
@@ -10,40 +10,38 @@ Signed-off-by: Steven Barth <steven@midlink.org>
|
||||
|
||||
--- a/src/dnssec.c
|
||||
+++ b/src/dnssec.c
|
||||
@@ -432,17 +432,24 @@ static int back_to_the_future;
|
||||
@@ -462,17 +462,24 @@ static time_t timestamp_time;
|
||||
int setup_timestamp(void)
|
||||
{
|
||||
struct stat statbuf;
|
||||
-
|
||||
+ time_t now;
|
||||
+ time_t base = 1420070400; /* 1-1-2015 */
|
||||
+
|
||||
back_to_the_future = 0;
|
||||
|
||||
daemon->back_to_the_future = 0;
|
||||
|
||||
if (!daemon->timestamp_file)
|
||||
return 0;
|
||||
-
|
||||
+
|
||||
+ now = time(NULL);
|
||||
+
|
||||
+ if (!stat("/proc/self/exe", &statbuf) && difftime(statbuf.st_mtime, base) > 0)
|
||||
+ base = statbuf.st_mtime;
|
||||
+
|
||||
|
||||
if (stat(daemon->timestamp_file, &statbuf) != -1)
|
||||
{
|
||||
timestamp_time = statbuf.st_mtime;
|
||||
check_and_exit:
|
||||
- if (difftime(timestamp_time, time(0)) <= 0)
|
||||
+ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0)
|
||||
+ if (difftime(now, base) >= 0 && difftime(timestamp_time, now) <= 0)
|
||||
{
|
||||
/* time already OK, update timestamp, and do key checking from the start. */
|
||||
if (utime(daemon->timestamp_file, NULL) == -1)
|
||||
@@ -463,7 +470,7 @@ int setup_timestamp(void)
|
||||
if (utimes(daemon->timestamp_file, NULL) == -1)
|
||||
@@ -493,7 +500,7 @@ int setup_timestamp(void)
|
||||
|
||||
close(fd);
|
||||
|
||||
- timestamp_time = timbuf.actime = timbuf.modtime = 1420070400; /* 1-1-2015 */
|
||||
+ timestamp_time = timbuf.actime = timbuf.modtime = base;
|
||||
if (utime(daemon->timestamp_file, &timbuf) == 0)
|
||||
goto check_and_exit;
|
||||
}
|
||||
- timestamp_time = 1420070400; /* 1-1-2015 */
|
||||
+ timestamp_time = base; /* 1-1-2015 */
|
||||
tv[0].tv_sec = tv[1].tv_sec = timestamp_time;
|
||||
tv[0].tv_usec = tv[1].tv_usec = 0;
|
||||
if (utimes(daemon->timestamp_file, tv) == 0)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
dnsmasq: fix warning with poll.h include on musl
|
||||
|
||||
Warning is:
|
||||
#warning redirecting incorrect #include <sys/poll.h> to <poll.h>
|
||||
|
||||
Signed-off-by: Kevin Darbyshire-Bryant <kevin@darbyshire-bryant.me.uk>
|
||||
|
||||
--- a/src/dnsmasq.h
|
||||
+++ b/src/dnsmasq.h
|
||||
@@ -82,7 +82,7 @@ typedef unsigned long long u64;
|
||||
#if defined(HAVE_SOLARIS_NETWORK)
|
||||
# include <sys/sockio.h>
|
||||
#endif
|
||||
-#include <sys/poll.h>
|
||||
+#include <poll.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/un.h>
|
||||
@@ -1,6 +1,15 @@
|
||||
menu "Configuration"
|
||||
depends on PACKAGE_dropbear
|
||||
|
||||
config DROPBEAR_CURVE25519
|
||||
bool "Curve25519 support"
|
||||
default y
|
||||
help
|
||||
This enables the following key exchange algorithm:
|
||||
curve25519-sha256@libssh.org
|
||||
|
||||
Increases binary size by about 13 kB uncompressed (MIPS).
|
||||
|
||||
config DROPBEAR_ECC
|
||||
bool "Elliptic curve cryptography (ECC)"
|
||||
default n
|
||||
@@ -12,7 +21,6 @@ config DROPBEAR_ECC
|
||||
ecdh-sha2-nistp256
|
||||
ecdh-sha2-nistp384
|
||||
ecdh-sha2-nistp521
|
||||
curve25519-sha256@libssh.org
|
||||
|
||||
Public key algorithms:
|
||||
ecdsa-sha2-nistp256
|
||||
@@ -22,6 +30,21 @@ config DROPBEAR_ECC
|
||||
Does not generate ECC host keys by default (ECC key exchange will not be used,
|
||||
only ECC public key auth).
|
||||
|
||||
Increases binary size by about 36 kB (MIPS).
|
||||
Increases binary size by about 23 kB (MIPS).
|
||||
|
||||
config DROPBEAR_UTMP
|
||||
bool "Utmp support"
|
||||
default n
|
||||
depends on BUSYBOX_CONFIG_FEATURE_UTMP
|
||||
help
|
||||
This enables dropbear utmp support, the file /var/run/utmp is used to
|
||||
track who is currently logged in.
|
||||
|
||||
config DROPBEAR_PUTUTLINE
|
||||
bool "Pututline support"
|
||||
default n
|
||||
depends on DROPBEAR_UTMP
|
||||
help
|
||||
Dropbear will use pututline() to write the utmp structure into the utmp file.
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (C) 2006-2014 OpenWrt.org
|
||||
# Copyright (C) 2006-2016 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
@@ -8,14 +8,14 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=dropbear
|
||||
PKG_VERSION:=2015.67
|
||||
PKG_VERSION:=2017.75
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||
PKG_SOURCE_URL:= \
|
||||
http://matt.ucc.asn.au/dropbear/releases/ \
|
||||
https://dropbear.nl/mirror/releases/
|
||||
PKG_MD5SUM:=e967e320344cd4bfebe321e3ab8514d6
|
||||
PKG_MD5SUM:=e57e9b9d25705dcb073ba15c416424fd
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE
|
||||
@@ -23,10 +23,14 @@ PKG_LICENSE_FILES:=LICENSE libtomcrypt/LICENSE libtommath/LICENSE
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
PKG_USE_MIPS16:=0
|
||||
|
||||
PKG_CONFIG_DEPENDS:=CONFIG_DROPBEAR_ECC
|
||||
PKG_CONFIG_DEPENDS:=CONFIG_TARGET_INIT_PATH CONFIG_DROPBEAR_ECC CONFIG_DROPBEAR_CURVE25519
|
||||
|
||||
include $(INCLUDE_DIR)/package.mk
|
||||
|
||||
ifneq ($(DUMP),1)
|
||||
STAMP_CONFIGURED:=$(strip $(STAMP_CONFIGURED))_$(shell $(SH_FUNC) echo $(CONFIG_TARGET_INIT_PATH) | md5s)
|
||||
endif
|
||||
|
||||
define Package/dropbear/Default
|
||||
URL:=http://matt.ucc.asn.au/dropbear/
|
||||
endef
|
||||
@@ -48,7 +52,6 @@ endef
|
||||
|
||||
define Package/dropbear/conffiles
|
||||
/etc/dropbear/dropbear_rsa_host_key
|
||||
/etc/dropbear/dropbear_dss_host_key
|
||||
/etc/config/dropbear
|
||||
endef
|
||||
|
||||
@@ -65,25 +68,34 @@ CONFIGURE_ARGS += \
|
||||
--enable-syslog \
|
||||
$(if $(CONFIG_SHADOW_PASSWORDS),,--disable-shadow) \
|
||||
--disable-lastlog \
|
||||
--disable-utmp \
|
||||
--disable-utmpx \
|
||||
$(if $(CONFIG_DROPBEAR_UTMP),,--disable-utmp) \
|
||||
--disable-wtmp \
|
||||
--disable-wtmpx \
|
||||
--disable-loginfunc \
|
||||
--disable-pututline \
|
||||
$(if $(CONFIG_DROPBEAR_PUTUTLINE),,--disable-pututline) \
|
||||
--disable-pututxline \
|
||||
--disable-zlib \
|
||||
--enable-bundled-libtom
|
||||
|
||||
TARGET_CFLAGS += -DARGTYPE=3 -ffunction-sections -fdata-sections
|
||||
TARGET_CFLAGS += -DDEFAULT_PATH=\\\"$(TARGET_INIT_PATH)\\\" -DARGTYPE=3 -ffunction-sections -fdata-sections
|
||||
TARGET_LDFLAGS += -Wl,--gc-sections
|
||||
|
||||
define Build/Configure
|
||||
$(Build/Configure/Default)
|
||||
|
||||
$(SED) 's,^#define DEFAULT_PATH .*$$$$,#define DEFAULT_PATH "$(TARGET_INIT_PATH)",g' \
|
||||
$(PKG_BUILD_DIR)/options.h
|
||||
|
||||
awk 'BEGIN { rc = 1 } \
|
||||
/'DROPBEAR_CURVE25519'/ { $$$$0 = "$(if $(CONFIG_DROPBEAR_CURVE25519),,// )#define 'DROPBEAR_CURVE25519'"; rc = 0 } \
|
||||
{ print } \
|
||||
END { exit(rc) }' $(PKG_BUILD_DIR)/options.h \
|
||||
>$(PKG_BUILD_DIR)/options.h.new && \
|
||||
mv $(PKG_BUILD_DIR)/options.h.new $(PKG_BUILD_DIR)/options.h
|
||||
|
||||
# Enforce that all replacements are made, otherwise options.h has changed
|
||||
# format and this logic is broken.
|
||||
for OPTION in DROPBEAR_ECDSA DROPBEAR_ECDH DROPBEAR_CURVE25519; do \
|
||||
for OPTION in DROPBEAR_ECDSA DROPBEAR_ECDH; do \
|
||||
awk 'BEGIN { rc = 1 } \
|
||||
/'$$$$OPTION'/ { $$$$0 = "$(if $(CONFIG_DROPBEAR_ECC),,// )#define '$$$$OPTION'"; rc = 0 } \
|
||||
{ print } \
|
||||
@@ -91,6 +103,13 @@ define Build/Configure
|
||||
>$(PKG_BUILD_DIR)/options.h.new && \
|
||||
mv $(PKG_BUILD_DIR)/options.h.new $(PKG_BUILD_DIR)/options.h || exit 1; \
|
||||
done
|
||||
|
||||
# remove protocol idented software version number
|
||||
$(SED) 's,^#define LOCAL_IDENT .*$$$$,#define LOCAL_IDENT "SSH-2.0-dropbear",g' \
|
||||
$(PKG_BUILD_DIR)/sysoptions.h
|
||||
|
||||
# Enforce rebuild of svr-chansession.c
|
||||
rm -f $(PKG_BUILD_DIR)/svr-chansession.o
|
||||
endef
|
||||
|
||||
define Build/Compile
|
||||
@@ -118,7 +137,6 @@ define Package/dropbear/install
|
||||
$(INSTALL_DIR) $(1)/usr/lib/opkg/info
|
||||
$(INSTALL_DIR) $(1)/etc/dropbear
|
||||
touch $(1)/etc/dropbear/dropbear_rsa_host_key
|
||||
touch $(1)/etc/dropbear/dropbear_dss_host_key
|
||||
endef
|
||||
|
||||
define Package/dropbearconvert/install
|
||||
|
||||
@@ -37,7 +37,6 @@ validate_section_dropbear()
|
||||
'RootPasswordAuth:bool:1' \
|
||||
'RootLogin:bool:1' \
|
||||
'rsakeyfile:file' \
|
||||
'dsskeyfile:file' \
|
||||
'BannerFile:file' \
|
||||
'Port:list(port):22' \
|
||||
'SSHKeepAlive:uinteger:300' \
|
||||
@@ -49,7 +48,7 @@ dropbear_instance()
|
||||
{
|
||||
local PasswordAuth enable Interface GatewayPorts \
|
||||
RootPasswordAuth RootLogin rsakeyfile \
|
||||
dsskeyfile BannerFile Port SSHKeepAlive IdleTimeout \
|
||||
BannerFile Port SSHKeepAlive IdleTimeout \
|
||||
mdns ipaddrs
|
||||
|
||||
validate_section_dropbear "${1}" || {
|
||||
@@ -75,18 +74,18 @@ dropbear_instance()
|
||||
[ "${RootPasswordAuth}" -eq 0 ] && procd_append_param command -g
|
||||
[ "${RootLogin}" -eq 0 ] && procd_append_param command -w
|
||||
[ -n "${rsakeyfile}" ] && procd_append_param command -r "${rsakeyfile}"
|
||||
[ -n "${dsskeyfile}" ] && procd_append_param command -d "${dsskeyfile}"
|
||||
[ -n "${BannerFile}" ] && procd_append_param command -b "${BannerFile}"
|
||||
append_ports "${ipaddrs}" "${Port}"
|
||||
[ "${IdleTimeout}" -ne 0 ] && procd_append_param command -I "${IdleTimeout}"
|
||||
[ "${SSHKeepAlive}" -ne 0 ] && procd_append_param command -K "${SSHKeepAlive}"
|
||||
[ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear"
|
||||
procd_set_param respawn
|
||||
procd_close_instance
|
||||
}
|
||||
|
||||
keygen()
|
||||
{
|
||||
for keytype in rsa dss; do
|
||||
for keytype in rsa; do
|
||||
# check for keys
|
||||
key=dropbear/dropbear_${keytype}_host_key
|
||||
[ -f /tmp/$key -o -s /etc/$key ] || {
|
||||
@@ -107,10 +106,15 @@ keygen()
|
||||
chmod 0700 /etc/dropbear
|
||||
}
|
||||
|
||||
load_interfaces()
|
||||
{
|
||||
config_get interface "$1" Interface
|
||||
interfaces=" ${interface} ${interfaces}"
|
||||
}
|
||||
|
||||
start_service()
|
||||
{
|
||||
[ -s /etc/dropbear/dropbear_rsa_host_key -a \
|
||||
-s /etc/dropbear/dropbear_dss_host_key ] || keygen
|
||||
[ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen
|
||||
|
||||
. /lib/functions.sh
|
||||
. /lib/functions/network.sh
|
||||
@@ -121,7 +125,21 @@ start_service()
|
||||
|
||||
service_triggers()
|
||||
{
|
||||
procd_add_reload_trigger "dropbear"
|
||||
local interfaces
|
||||
|
||||
procd_open_trigger
|
||||
procd_add_config_trigger "config.change" "dropbear" /etc/init.d/dropbear reload
|
||||
|
||||
config_load "${NAME}"
|
||||
config_foreach load_interfaces dropbear
|
||||
|
||||
[ -n "${interfaces}" ] & {
|
||||
for n in $interfaces ; do
|
||||
procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload
|
||||
done
|
||||
}
|
||||
procd_close_trigger
|
||||
|
||||
procd_add_validation validate_section_dropbear
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/svr-authpubkey.c
|
||||
+++ b/svr-authpubkey.c
|
||||
@@ -208,17 +208,21 @@ static int checkpubkey(unsigned char* al
|
||||
@@ -220,14 +220,20 @@ static int checkpubkey(char* algo, unsig
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
- filename = m_malloc(len + 22);
|
||||
- snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
|
||||
- ses.authstate.pw_dir);
|
||||
-
|
||||
- /* open the file */
|
||||
- authfile = fopen(filename, "r");
|
||||
+ if (ses.authstate.pw_uid != 0) {
|
||||
+ /* we don't need to check pw and pw_dir for validity, since
|
||||
+ * its been done in checkpubkeyperms. */
|
||||
@@ -22,18 +19,17 @@
|
||||
+ /* allocate max required pathname storage,
|
||||
+ * = path + "/.ssh/authorized_keys" + '\0' = pathlen + 22 */
|
||||
+ filename = m_malloc(len + 22);
|
||||
+ snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
|
||||
+ ses.authstate.pw_dir);
|
||||
+
|
||||
+ /* open the file */
|
||||
+ authfile = fopen(filename, "r");
|
||||
+ snprintf(filename, len + 22, "%s/.ssh/authorized_keys",
|
||||
+ ses.authstate.pw_dir);
|
||||
+ } else {
|
||||
+ authfile = fopen("/etc/dropbear/authorized_keys","r");
|
||||
+ filename = m_malloc(30);
|
||||
+ strncpy(filename, "/etc/dropbear/authorized_keys", 30);
|
||||
+ }
|
||||
if (authfile == NULL) {
|
||||
goto out;
|
||||
}
|
||||
@@ -371,26 +375,35 @@ static int checkpubkeyperms() {
|
||||
+
|
||||
|
||||
/* open the file as the authenticating user. */
|
||||
origuid = getuid();
|
||||
@@ -396,26 +402,35 @@ static int checkpubkeyperms() {
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/svr-chansession.c
|
||||
+++ b/svr-chansession.c
|
||||
@@ -920,12 +920,12 @@ static void execchild(void *user_data) {
|
||||
@@ -922,12 +922,12 @@ static void execchild(void *user_data) {
|
||||
/* We can only change uid/gid as root ... */
|
||||
if (getuid() == 0) {
|
||||
|
||||
|
||||
@@ -18,20 +18,49 @@
|
||||
|
||||
/* Whether to support "-c" and "-m" flags to choose ciphers/MACs at runtime */
|
||||
#define ENABLE_USER_ALGO_LIST
|
||||
@@ -126,9 +126,9 @@ much traffic. */
|
||||
@@ -91,16 +91,16 @@ much traffic. */
|
||||
* Including multiple keysize variants the same cipher
|
||||
* (eg AES256 as well as AES128) will result in a minimal size increase.*/
|
||||
#define DROPBEAR_AES128
|
||||
-#define DROPBEAR_3DES
|
||||
+/*#define DROPBEAR_3DES*/
|
||||
#define DROPBEAR_AES256
|
||||
/* Compiling in Blowfish will add ~6kB to runtime heap memory usage */
|
||||
/*#define DROPBEAR_BLOWFISH*/
|
||||
-#define DROPBEAR_TWOFISH256
|
||||
-#define DROPBEAR_TWOFISH128
|
||||
+/*#define DROPBEAR_TWOFISH256*/
|
||||
+/*#define DROPBEAR_TWOFISH128*/
|
||||
|
||||
/* Enable CBC mode for ciphers. This has security issues though
|
||||
* is the most compatible with older SSH implementations */
|
||||
-#define DROPBEAR_ENABLE_CBC_MODE
|
||||
+/*#define DROPBEAR_ENABLE_CBC_MODE*/
|
||||
|
||||
/* Enable "Counter Mode" for ciphers. This is more secure than normal
|
||||
* CBC mode against certain attacks. It is recommended for security
|
||||
@@ -131,9 +131,9 @@ If you test it please contact the Dropbe
|
||||
* If you disable MD5, Dropbear will fall back to SHA1 fingerprints,
|
||||
* which are not the standard form. */
|
||||
#define DROPBEAR_SHA1_HMAC
|
||||
-#define DROPBEAR_SHA1_96_HMAC
|
||||
-#define DROPBEAR_SHA2_256_HMAC
|
||||
-#define DROPBEAR_SHA2_512_HMAC
|
||||
+/*#define DROPBEAR_SHA1_96_HMAC*/
|
||||
+/*#define DROPBEAR_SHA2_256_HMAC*/
|
||||
#define DROPBEAR_SHA2_256_HMAC
|
||||
-#define DROPBEAR_SHA2_512_HMAC
|
||||
+/*#define DROPBEAR_SHA2_512_HMAC*/
|
||||
#define DROPBEAR_MD5_HMAC
|
||||
|
||||
/* You can also disable integrity. Don't bother disabling this if you're
|
||||
@@ -184,7 +184,7 @@ much traffic. */
|
||||
@@ -146,7 +146,7 @@ If you test it please contact the Dropbe
|
||||
* Removing either of these won't save very much space.
|
||||
* SSH2 RFC Draft requires dss, recommends rsa */
|
||||
#define DROPBEAR_RSA
|
||||
-#define DROPBEAR_DSS
|
||||
+/*#define DROPBEAR_DSS*/
|
||||
/* ECDSA is significantly faster than RSA or DSS. Compiling in ECC
|
||||
* code (either ECDSA or ECDH) increases binary size - around 30kB
|
||||
* on x86-64 */
|
||||
@@ -194,7 +194,7 @@ If you test it please contact the Dropbe
|
||||
|
||||
/* Whether to print the message of the day (MOTD). This doesn't add much code
|
||||
* size */
|
||||
@@ -40,7 +69,7 @@
|
||||
|
||||
/* The MOTD file path */
|
||||
#ifndef MOTD_FILENAME
|
||||
@@ -226,7 +226,7 @@ much traffic. */
|
||||
@@ -242,7 +242,7 @@ Homedir is prepended unless path begins
|
||||
* note that it will be provided for all "hidden" client-interactive
|
||||
* style prompts - if you want something more sophisticated, use
|
||||
* SSH_ASKPASS instead. Comment out this var to remove this functionality.*/
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
--- a/cli-runopts.c
|
||||
+++ b/cli-runopts.c
|
||||
@@ -315,6 +315,10 @@ void cli_getopts(int argc, char ** argv)
|
||||
debug_trace = 1;
|
||||
break;
|
||||
#endif
|
||||
+ case 'o':
|
||||
+ next = &dummy;
|
||||
+ case 'x':
|
||||
+ break;
|
||||
case 'F':
|
||||
case 'e':
|
||||
#ifndef ENABLE_USER_ALGO_LIST
|
||||
@@ -332,7 +336,6 @@ void cli_getopts(int argc, char ** argv)
|
||||
print_version();
|
||||
exit(EXIT_SUCCESS);
|
||||
break;
|
||||
- case 'o':
|
||||
case 'b':
|
||||
next = &dummy;
|
||||
default:
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/cli-runopts.c
|
||||
+++ b/cli-runopts.c
|
||||
@@ -296,6 +296,8 @@ void cli_getopts(int argc, char ** argv)
|
||||
debug_trace = 1;
|
||||
break;
|
||||
#endif
|
||||
+ case 'x':
|
||||
+ break;
|
||||
case 'F':
|
||||
case 'e':
|
||||
#ifndef ENABLE_USER_ALGO_LIST
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/dbutil.h
|
||||
+++ b/dbutil.h
|
||||
@@ -101,7 +101,11 @@ int m_str_to_uint(const char* str, unsig
|
||||
@@ -78,7 +78,11 @@ int m_str_to_uint(const char* str, unsig
|
||||
#define DEF_MP_INT(X) mp_int X = {0, 0, 0, NULL}
|
||||
|
||||
/* Dropbear assertion */
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
--- a/options.h
|
||||
+++ b/options.h
|
||||
@@ -5,6 +5,11 @@
|
||||
#ifndef _OPTIONS_H_
|
||||
#define _OPTIONS_H_
|
||||
#ifndef DROPBEAR_OPTIONS_H_
|
||||
#define DROPBEAR_OPTIONS_H_
|
||||
|
||||
+#if !defined(DROPBEAR_CLIENT) && !defined(DROPBEAR_SERVER)
|
||||
+#define DROPBEAR_SERVER
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
--- a/options.h
|
||||
+++ b/options.h
|
||||
@@ -336,7 +336,7 @@ be overridden at runtime with -I. 0 disa
|
||||
@@ -352,7 +352,9 @@ be overridden at runtime with -I. 0 disa
|
||||
#define DEFAULT_IDLE_TIMEOUT 0
|
||||
|
||||
/* The default path. This will often get replaced by the shell */
|
||||
-#define DEFAULT_PATH "/usr/bin:/bin"
|
||||
+#define DEFAULT_PATH "/bin:/sbin:/usr/bin:/usr/sbin"
|
||||
+#ifndef DEFAULT_PATH
|
||||
#define DEFAULT_PATH "/usr/bin:/bin"
|
||||
+#endif
|
||||
|
||||
/* Some other defines (that mostly should be left alone) are defined
|
||||
* in sysoptions.h */
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
--- a/svr-auth.c
|
||||
+++ b/svr-auth.c
|
||||
@@ -149,7 +149,7 @@ void recv_msg_userauth_request() {
|
||||
AUTH_METHOD_NONE_LEN) == 0) {
|
||||
TRACE(("recv_msg_userauth_request: 'none' request"))
|
||||
if (valid_user
|
||||
- && svr_opts.allowblankpass
|
||||
+ && (svr_opts.allowblankpass || !strcmp(ses.authstate.pw_name, "root"))
|
||||
&& !svr_opts.noauthpass
|
||||
&& !(svr_opts.norootpass && ses.authstate.pw_uid == 0)
|
||||
&& ses.authstate.pw_passwd[0] == '\0')
|
||||
@@ -0,0 +1,18 @@
|
||||
--- a/svr-runopts.c
|
||||
+++ b/svr-runopts.c
|
||||
@@ -488,6 +488,7 @@ void load_all_hostkeys() {
|
||||
m_free(hostkey_file);
|
||||
}
|
||||
|
||||
+ if (svr_opts.num_hostkey_files <= 0) {
|
||||
#ifdef DROPBEAR_RSA
|
||||
loadhostkey(RSA_PRIV_FILENAME, 0);
|
||||
#endif
|
||||
@@ -499,6 +500,7 @@ void load_all_hostkeys() {
|
||||
#ifdef DROPBEAR_ECDSA
|
||||
loadhostkey(ECDSA_PRIV_FILENAME, 0);
|
||||
#endif
|
||||
+ }
|
||||
|
||||
#ifdef DROPBEAR_DELAY_HOSTKEY
|
||||
if (svr_opts.delay_hostkey) {
|
||||
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=samba
|
||||
PKG_VERSION:=3.6.25
|
||||
PKG_RELEASE:=5
|
||||
PKG_RELEASE:=6
|
||||
|
||||
PKG_SOURCE_URL:=http://ftp.samba.org/pub/samba \
|
||||
http://ftp.samba.org/pub/samba/stable
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
From d2bc9f3afe23ee04d237ae9f4511fbe59a27ff54 Mon Sep 17 00:00:00 2001
|
||||
From: Volker Lendecke <vl@samba.org>
|
||||
Date: Mon, 8 May 2017 21:40:40 +0200
|
||||
Subject: [PATCH] CVE-2017-7494: rpc_server3: Refuse to open pipe names with /
|
||||
inside
|
||||
|
||||
Bug: https://bugzilla.samba.org/show_bug.cgi?id=12780
|
||||
|
||||
Signed-off-by: Volker Lendecke <vl@samba.org>
|
||||
Reviewed-by: Jeremy Allison <jra@samba.org>
|
||||
Reviewed-by: Stefan Metzmacher <metze@samba.org>
|
||||
---
|
||||
source3/rpc_server/srv_pipe.c | 5 +++++
|
||||
1 file changed, 5 insertions(+)
|
||||
|
||||
--- a/source3/rpc_server/srv_pipe.c
|
||||
+++ b/source3/rpc_server/srv_pipe.c
|
||||
@@ -473,6 +473,11 @@ bool is_known_pipename(const char *cli_f
|
||||
pipename += 1;
|
||||
}
|
||||
|
||||
+ if (strchr(pipename, '/')) {
|
||||
+ DEBUG(1, ("Refusing open on pipe %s\n", pipename));
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
if (lp_disable_spoolss() && strequal(pipename, "spoolss")) {
|
||||
DEBUG(10, ("refusing spoolss access\n"));
|
||||
return false;
|
||||
@@ -303,7 +303,7 @@
|
||||
|
||||
--- a/source3/rpc_server/srv_pipe.c
|
||||
+++ b/source3/rpc_server/srv_pipe.c
|
||||
@@ -991,7 +991,6 @@ static bool api_pipe_bind_req(struct pip
|
||||
@@ -996,7 +996,6 @@ static bool api_pipe_bind_req(struct pip
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("api_pipe_bind_req: invalid pdu: %s\n",
|
||||
nt_errstr(status)));
|
||||
@@ -311,7 +311,7 @@
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
@@ -1325,7 +1324,6 @@ bool api_pipe_bind_auth3(struct pipes_st
|
||||
@@ -1330,7 +1329,6 @@ bool api_pipe_bind_auth3(struct pipes_st
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("api_pipe_bind_auth3: invalid pdu: %s\n",
|
||||
nt_errstr(status)));
|
||||
@@ -319,7 +319,7 @@
|
||||
goto err;
|
||||
}
|
||||
|
||||
@@ -1483,7 +1481,6 @@ static bool api_pipe_alter_context(struc
|
||||
@@ -1488,7 +1486,6 @@ static bool api_pipe_alter_context(struc
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("api_pipe_alter_context: invalid pdu: %s\n",
|
||||
nt_errstr(status)));
|
||||
@@ -327,7 +327,7 @@
|
||||
goto err_exit;
|
||||
}
|
||||
|
||||
@@ -2057,7 +2054,6 @@ static bool process_request_pdu(struct p
|
||||
@@ -2062,7 +2059,6 @@ static bool process_request_pdu(struct p
|
||||
if (!NT_STATUS_IS_OK(status)) {
|
||||
DEBUG(1, ("process_request_pdu: invalid pdu: %s\n",
|
||||
nt_errstr(status)));
|
||||
|
||||
@@ -8,15 +8,13 @@
|
||||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=tcpdump
|
||||
PKG_VERSION:=4.5.1
|
||||
PKG_RELEASE:=4
|
||||
PKG_VERSION:=4.9.2
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
||||
PKG_SOURCE_URL:=http://www.tcpdump.org/release/ \
|
||||
http://ftp.gwdg.de/pub/misc/tcpdump/ \
|
||||
http://www.at.tcpdump.org/ \
|
||||
http://www.br.tcpdump.org/
|
||||
PKG_MD5SUM:=973a2513d0076e34aa9da7e15ed98e1b
|
||||
http://www.at.tcpdump.org/
|
||||
PKG_MD5SUM:=9bbc1ee33dab61302411b02dd0515576
|
||||
|
||||
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||
PKG_BUILD_PARALLEL:=1
|
||||
|
||||
@@ -1,23 +1,100 @@
|
||||
--- a/tcpdump.c
|
||||
+++ b/tcpdump.c
|
||||
@@ -1095,20 +1095,6 @@ main(int argc, char **argv)
|
||||
error("invalid data link type %s", gndo->ndo_dltname);
|
||||
break;
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -6259,97 +6259,6 @@ $as_echo "no" >&6; }
|
||||
fi
|
||||
fi
|
||||
|
||||
-#if defined(HAVE_PCAP_DEBUG) || defined(HAVE_YYDEBUG)
|
||||
- case 'Y':
|
||||
- {
|
||||
- /* Undocumented flag */
|
||||
-#ifdef HAVE_PCAP_DEBUG
|
||||
- extern int pcap_debug;
|
||||
- pcap_debug = 1;
|
||||
-#else
|
||||
-#
|
||||
-# Check for special debugging functions
|
||||
-#
|
||||
-for ac_func in pcap_set_parser_debug
|
||||
-do :
|
||||
- ac_fn_c_check_func "$LINENO" "pcap_set_parser_debug" "ac_cv_func_pcap_set_parser_debug"
|
||||
-if test "x$ac_cv_func_pcap_set_parser_debug" = xyes; then :
|
||||
- cat >>confdefs.h <<_ACEOF
|
||||
-#define HAVE_PCAP_SET_PARSER_DEBUG 1
|
||||
-_ACEOF
|
||||
-
|
||||
-fi
|
||||
-done
|
||||
-
|
||||
-if test "$ac_cv_func_pcap_set_parser_debug" = "no" ; then
|
||||
- #
|
||||
- # OK, we don't have pcap_set_parser_debug() to set the libpcap
|
||||
- # filter expression parser debug flag; can we directly set the
|
||||
- # flag?
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pcap_debug is defined by libpcap" >&5
|
||||
-$as_echo_n "checking whether pcap_debug is defined by libpcap... " >&6; }
|
||||
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
-/* end confdefs.h. */
|
||||
-
|
||||
-int
|
||||
-main ()
|
||||
-{
|
||||
-
|
||||
- extern int pcap_debug;
|
||||
-
|
||||
- return pcap_debug;
|
||||
-
|
||||
- ;
|
||||
- return 0;
|
||||
-}
|
||||
-_ACEOF
|
||||
-if ac_fn_c_try_link "$LINENO"; then :
|
||||
- ac_lbl_cv_pcap_debug_defined=yes
|
||||
-else
|
||||
- ac_lbl_cv_pcap_debug_defined=no
|
||||
-fi
|
||||
-rm -f core conftest.err conftest.$ac_objext \
|
||||
- conftest$ac_exeext conftest.$ac_ext
|
||||
- if test "$ac_lbl_cv_pcap_debug_defined" = yes ; then
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
-$as_echo "yes" >&6; }
|
||||
-
|
||||
-$as_echo "#define HAVE_PCAP_DEBUG 1" >>confdefs.h
|
||||
-
|
||||
- else
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
-$as_echo "no" >&6; }
|
||||
- #
|
||||
- # OK, what about "yydebug"?
|
||||
- #
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether yydebug is defined by libpcap" >&5
|
||||
-$as_echo_n "checking whether yydebug is defined by libpcap... " >&6; }
|
||||
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
-/* end confdefs.h. */
|
||||
-
|
||||
-int
|
||||
-main ()
|
||||
-{
|
||||
-
|
||||
- extern int yydebug;
|
||||
- yydebug = 1;
|
||||
-#endif
|
||||
- }
|
||||
- break;
|
||||
-#endif
|
||||
case 'z':
|
||||
if (optarg) {
|
||||
zflag = strdup(optarg);
|
||||
-
|
||||
- return yydebug;
|
||||
-
|
||||
- ;
|
||||
- return 0;
|
||||
-}
|
||||
-_ACEOF
|
||||
-if ac_fn_c_try_link "$LINENO"; then :
|
||||
- ac_lbl_cv_yydebug_defined=yes
|
||||
-else
|
||||
- ac_lbl_cv_yydebug_defined=no
|
||||
-fi
|
||||
-rm -f core conftest.err conftest.$ac_objext \
|
||||
- conftest$ac_exeext conftest.$ac_ext
|
||||
- if test "$ac_lbl_cv_yydebug_defined" = yes ; then
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
|
||||
-$as_echo "yes" >&6; }
|
||||
-
|
||||
-$as_echo "#define HAVE_YYDEBUG 1" >>confdefs.h
|
||||
-
|
||||
- else
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
|
||||
-$as_echo "no" >&6; }
|
||||
- fi
|
||||
- fi
|
||||
-fi
|
||||
for ac_func in pcap_set_optimizer_debug
|
||||
do :
|
||||
ac_fn_c_check_func "$LINENO" "pcap_set_optimizer_debug" "ac_cv_func_pcap_set_optimizer_debug"
|
||||
|
||||
@@ -1,35 +1,44 @@
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -5813,28 +5813,6 @@ $as_echo "Using $pfopen" >&6; }
|
||||
@@ -5471,37 +5471,6 @@ $as_echo "Using $pfopen" >&6; }
|
||||
LIBS="$LIBS $pfopen"
|
||||
fi
|
||||
fi
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local pcap library" >&5
|
||||
- libpcap=FAIL
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for local pcap library" >&5
|
||||
-$as_echo_n "checking for local pcap library... " >&6; }
|
||||
- libpcap=FAIL
|
||||
- lastdir=FAIL
|
||||
- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
|
||||
- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'`
|
||||
- for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
|
||||
- basedir=`echo $dir | sed -e 's/[ab][0-9]*$//' | \
|
||||
- sed -e 's/-PRE-GIT$//' `
|
||||
- if test $lastdir = $basedir ; then
|
||||
- continue;
|
||||
- fi
|
||||
- lastdir=$dir
|
||||
- if test -r $dir/libpcap.a ; then
|
||||
- libpcap=$dir/libpcap.a
|
||||
- d=$dir
|
||||
- fi
|
||||
- done
|
||||
-
|
||||
-# Check whether --with-system-libpcap was given.
|
||||
-if test "${with_system_libpcap+set}" = set; then :
|
||||
- withval=$with_system_libpcap;
|
||||
-fi
|
||||
-
|
||||
- if test "x$with_system_libpcap" != xyes ; then
|
||||
- lastdir=FAIL
|
||||
- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
|
||||
- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'`
|
||||
- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \
|
||||
- egrep '/libpcap-[0-9]+\.[0-9]+(\.[0-9]*)?([ab][0-9]*|-PRE-GIT)?$'`
|
||||
- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do
|
||||
- basedir=`echo $dir | sed -e 's/[ab][0-9]*$//' | \
|
||||
- sed -e 's/-PRE-GIT$//' `
|
||||
- if test $lastdir = $basedir ; then
|
||||
- continue;
|
||||
- fi
|
||||
- lastdir=$dir
|
||||
- if test -r $dir/libpcap.a ; then
|
||||
- libpcap=$dir/libpcap.a
|
||||
- d=$dir
|
||||
- fi
|
||||
- done
|
||||
- fi
|
||||
- if test $libpcap = FAIL ; then
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5
|
||||
-$as_echo "not found" >&6; }
|
||||
-
|
||||
|
||||
#
|
||||
# Look for pcap-config.
|
||||
#
|
||||
@@ -5989,41 +5967,6 @@ if test "x$ac_cv_lib_pcap_main" = xyes;
|
||||
@@ -5657,51 +5626,6 @@ if test "x$ac_cv_lib_pcap_main" = xyes;
|
||||
libpcap="-lpcap"
|
||||
fi
|
||||
|
||||
@@ -59,13 +68,23 @@
|
||||
- V_PCAPDEP=$libpcap
|
||||
- places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
|
||||
- egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'`
|
||||
- places2=`ls .. | sed -e 's,/$,,' -e "s,^,../," | \
|
||||
- egrep '/libpcap-[0-9]*.[0-9]*(.[0-9]*)?([ab][0-9]*)?$'`
|
||||
- pcapH=FAIL
|
||||
- if test -r $d/pcap.h; then
|
||||
- V_INCLS="-I$d $V_INCLS"
|
||||
- elif test -r $places/pcap.h; then
|
||||
- V_INCLS="-I$places $V_INCLS"
|
||||
- pcapH=$d
|
||||
- else
|
||||
- as_fn_error see INSTALL "cannot find pcap.h" "$LINENO" 5
|
||||
- for dir in $places $srcdir/../libpcap ../libpcap $srcdir/libpcap $places2 ; do
|
||||
- if test -r $dir/pcap.h ; then
|
||||
- pcapH=$dir
|
||||
- fi
|
||||
- done
|
||||
- fi
|
||||
-
|
||||
- if test $pcapH = FAIL ; then
|
||||
- as_fn_error $? "cannot find pcap.h: see INSTALL" "$LINENO" 5
|
||||
- fi
|
||||
- V_INCLS="-I$pcapH $V_INCLS"
|
||||
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libpcap" >&5
|
||||
-$as_echo "$libpcap" >&6; }
|
||||
# Extract the first word of "pcap-config", so it can be a program name with args.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -2187,19 +2187,19 @@ config BUSYBOX_DEFAULT_TCPSVD
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_TELNET
|
||||
bool
|
||||
default y
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE
|
||||
bool
|
||||
default y
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN
|
||||
bool
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_TELNETD
|
||||
bool
|
||||
default y
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE
|
||||
bool
|
||||
default y
|
||||
default n
|
||||
config BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT
|
||||
bool
|
||||
default n
|
||||
|
||||
@@ -110,7 +110,6 @@ define Package/busybox/install
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(CP) $(PKG_INSTALL_DIR)/* $(1)/
|
||||
$(INSTALL_BIN) ./files/cron $(1)/etc/init.d/cron
|
||||
$(INSTALL_BIN) ./files/telnet $(1)/etc/init.d/telnet
|
||||
$(INSTALL_BIN) ./files/sysntpd $(1)/etc/init.d/sysntpd
|
||||
$(INSTALL_BIN) ./files/ntpd-hotplug $(1)/usr/sbin/ntpd-hotplug
|
||||
-rm -rf $(1)/lib64
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/bin/sh /etc/rc.common
|
||||
# Copyright (C) 2006-2011 OpenWrt.org
|
||||
|
||||
START=50
|
||||
|
||||
USE_PROCD=1
|
||||
PROG=/usr/sbin/telnetd
|
||||
|
||||
has_root_pwd() {
|
||||
local pwd=$([ -f "$1" ] && cat "$1")
|
||||
pwd="${pwd#*root:}"
|
||||
pwd="${pwd%%:*}"
|
||||
|
||||
test -n "${pwd#[\!x]}"
|
||||
}
|
||||
|
||||
get_root_home() {
|
||||
local homedir=$([ -f "$1" ] && cat "$1")
|
||||
homedir="${homedir#*:*:0:0:*:}"
|
||||
|
||||
echo "${homedir%%:*}"
|
||||
}
|
||||
|
||||
has_ssh_pubkey() {
|
||||
( /etc/init.d/dropbear enabled 2> /dev/null && grep -qs "^ssh-" /etc/dropbear/authorized_keys ) || \
|
||||
( /etc/init.d/sshd enabled 2> /dev/null && grep -qs "^ssh-" "$(get_root_home /etc/passwd)"/.ssh/authorized_keys )
|
||||
}
|
||||
|
||||
start_service() {
|
||||
if ( ! has_ssh_pubkey && \
|
||||
! has_root_pwd /etc/passwd && ! has_root_pwd /etc/shadow ) || \
|
||||
( ! /etc/init.d/dropbear enabled 2> /dev/null && ! /etc/init.d/sshd enabled 2> /dev/null );
|
||||
then
|
||||
procd_open_instance
|
||||
procd_set_param command "$PROG" -F -l /bin/login.sh
|
||||
procd_close_instance
|
||||
fi
|
||||
}
|
||||
2
rules.mk
2
rules.mk
@@ -117,6 +117,8 @@ BUILD_LOG_DIR:=$(TOPDIR)/logs
|
||||
PKG_INFO_DIR := $(STAGING_DIR)/pkginfo
|
||||
|
||||
TARGET_PATH:=$(subst $(space),:,$(filter-out .,$(filter-out ./,$(subst :,$(space),$(PATH)))))
|
||||
TARGET_INIT_PATH:=$(call qstrip,$(CONFIG_TARGET_INIT_PATH))
|
||||
TARGET_INIT_PATH:=$(if $(TARGET_INIT_PATH),$(TARGET_INIT_PATH),/usr/sbin:/sbin:/usr/bin:/bin)
|
||||
TARGET_CFLAGS:=$(TARGET_OPTIMIZATION)$(if $(CONFIG_DEBUG), -g3) $(EXTRA_OPTIMIZATION)
|
||||
TARGET_CXXFLAGS = $(TARGET_CFLAGS)
|
||||
TARGET_ASFLAGS_DEFAULT = $(TARGET_CFLAGS)
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
obj-$(CONFIG_PCI_AR724X) += pci-ar724x.o
|
||||
--- a/include/linux/pci_ids.h
|
||||
+++ b/include/linux/pci_ids.h
|
||||
@@ -1820,6 +1820,9 @@
|
||||
@@ -1821,6 +1821,9 @@
|
||||
|
||||
#define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@
|
||||
|
||||
--- a/drivers/mtd/chips/Kconfig
|
||||
+++ b/drivers/mtd/chips/Kconfig
|
||||
@@ -188,6 +188,14 @@ config MTD_CFI_AMDSTD
|
||||
@@ -189,6 +189,14 @@ config MTD_CFI_AMDSTD
|
||||
provides support for command set 0002, used on chips including
|
||||
the AMD Am29LV320.
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
obj-$(CONFIG_CAVIUM_OCTEON_SOC) += msi-octeon.o
|
||||
--- a/include/linux/pci_ids.h
|
||||
+++ b/include/linux/pci_ids.h
|
||||
@@ -1820,6 +1820,9 @@
|
||||
@@ -1821,6 +1821,9 @@
|
||||
|
||||
#define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
+++ b/drivers/net/ethernet/dec/tulip/tulip_core.c
|
||||
@@ -207,6 +207,7 @@ struct tulip_chip_table tulip_tbl[] = {
|
||||
@@ -206,6 +206,7 @@ struct tulip_chip_table tulip_tbl[] = {
|
||||
};
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
static const struct pci_device_id tulip_pci_tbl[] = {
|
||||
{ 0x1011, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 },
|
||||
{ 0x1011, 0x0019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21143 },
|
||||
@@ -250,7 +251,7 @@ static const struct pci_device_id tulip_
|
||||
@@ -249,7 +250,7 @@ static const struct pci_device_id tulip_
|
||||
{ } /* terminate list */
|
||||
};
|
||||
MODULE_DEVICE_TABLE(pci, tulip_pci_tbl);
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
/* A full-duplex map for media types. */
|
||||
const char tulip_media_cap[32] =
|
||||
@@ -268,11 +269,14 @@ static void tulip_down(struct net_device
|
||||
@@ -267,11 +268,14 @@ static void tulip_down(struct net_device
|
||||
static struct net_device_stats *tulip_get_stats(struct net_device *dev);
|
||||
static int private_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
|
||||
static void set_rx_mode(struct net_device *dev);
|
||||
@@ -32,7 +32,7 @@
|
||||
static void tulip_set_power_state (struct tulip_private *tp,
|
||||
int sleep, int snooze)
|
||||
{
|
||||
@@ -289,7 +293,7 @@ static void tulip_set_power_state (struc
|
||||
@@ -288,7 +292,7 @@ static void tulip_set_power_state (struc
|
||||
}
|
||||
|
||||
}
|
||||
@@ -41,7 +41,7 @@
|
||||
|
||||
static void tulip_up(struct net_device *dev)
|
||||
{
|
||||
@@ -303,6 +307,7 @@ static void tulip_up(struct net_device *
|
||||
@@ -302,6 +306,7 @@ static void tulip_up(struct net_device *
|
||||
napi_enable(&tp->napi);
|
||||
#endif
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
/* Wake the chip from sleep/snooze mode. */
|
||||
tulip_set_power_state (tp, 0, 0);
|
||||
|
||||
@@ -310,6 +315,7 @@ static void tulip_up(struct net_device *
|
||||
@@ -309,6 +314,7 @@ static void tulip_up(struct net_device *
|
||||
pci_enable_wake(tp->pdev, PCI_D3hot, 0);
|
||||
pci_enable_wake(tp->pdev, PCI_D3cold, 0);
|
||||
tulip_set_wolopts(tp->pdev, 0);
|
||||
@@ -57,7 +57,7 @@
|
||||
|
||||
/* On some chip revs we must set the MII/SYM port before the reset!? */
|
||||
if (tp->mii_cnt || (tp->mtable && tp->mtable->has_mii))
|
||||
@@ -317,18 +323,22 @@ static void tulip_up(struct net_device *
|
||||
@@ -316,18 +322,22 @@ static void tulip_up(struct net_device *
|
||||
|
||||
/* Reset the chip, holding bit 0 set at least 50 PCI cycles. */
|
||||
iowrite32(0x00000001, ioaddr + CSR0);
|
||||
@@ -81,7 +81,7 @@
|
||||
|
||||
iowrite32(tp->rx_ring_dma, ioaddr + CSR3);
|
||||
iowrite32(tp->tx_ring_dma, ioaddr + CSR4);
|
||||
@@ -362,9 +372,11 @@ static void tulip_up(struct net_device *
|
||||
@@ -361,9 +371,11 @@ static void tulip_up(struct net_device *
|
||||
*setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1];
|
||||
*setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2];
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
tp->tx_buffers[tp->cur_tx].skb = NULL;
|
||||
tp->tx_buffers[tp->cur_tx].mapping = mapping;
|
||||
|
||||
@@ -520,7 +532,7 @@ tulip_open(struct net_device *dev)
|
||||
@@ -519,7 +531,7 @@ tulip_open(struct net_device *dev)
|
||||
|
||||
tulip_init_ring (dev);
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
dev->name, dev);
|
||||
if (retval)
|
||||
goto free_ring;
|
||||
@@ -644,8 +656,10 @@ static void tulip_init_ring(struct net_d
|
||||
@@ -643,8 +655,10 @@ static void tulip_init_ring(struct net_d
|
||||
tp->rx_buffers[i].skb = skb;
|
||||
if (skb == NULL)
|
||||
break;
|
||||
@@ -113,7 +113,7 @@
|
||||
tp->rx_buffers[i].mapping = mapping;
|
||||
tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */
|
||||
tp->rx_ring[i].buffer1 = cpu_to_le32(mapping);
|
||||
@@ -678,8 +692,10 @@ tulip_start_xmit(struct sk_buff *skb, st
|
||||
@@ -677,8 +691,10 @@ tulip_start_xmit(struct sk_buff *skb, st
|
||||
entry = tp->cur_tx % TX_RING_SIZE;
|
||||
|
||||
tp->tx_buffers[entry].skb = skb;
|
||||
@@ -124,7 +124,7 @@
|
||||
tp->tx_buffers[entry].mapping = mapping;
|
||||
tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping);
|
||||
|
||||
@@ -730,16 +746,19 @@ static void tulip_clean_tx_ring(struct t
|
||||
@@ -729,16 +745,19 @@ static void tulip_clean_tx_ring(struct t
|
||||
if (tp->tx_buffers[entry].skb == NULL) {
|
||||
/* test because dummy frames not mapped */
|
||||
if (tp->tx_buffers[entry].mapping)
|
||||
@@ -145,7 +145,7 @@
|
||||
|
||||
/* Free the original skb. */
|
||||
dev_kfree_skb_irq(tp->tx_buffers[entry].skb);
|
||||
@@ -790,7 +809,9 @@ static void tulip_down (struct net_devic
|
||||
@@ -789,7 +808,9 @@ static void tulip_down (struct net_devic
|
||||
dev->if_port = tp->saved_if_port;
|
||||
|
||||
/* Leave the driver in snooze, not sleep, mode. */
|
||||
@@ -155,7 +155,7 @@
|
||||
}
|
||||
|
||||
static void tulip_free_ring (struct net_device *dev)
|
||||
@@ -811,8 +832,10 @@ static void tulip_free_ring (struct net_
|
||||
@@ -810,8 +831,10 @@ static void tulip_free_ring (struct net_
|
||||
/* An invalid address. */
|
||||
tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0);
|
||||
if (skb) {
|
||||
@@ -166,7 +166,7 @@
|
||||
dev_kfree_skb (skb);
|
||||
}
|
||||
}
|
||||
@@ -821,8 +844,10 @@ static void tulip_free_ring (struct net_
|
||||
@@ -820,8 +843,10 @@ static void tulip_free_ring (struct net_
|
||||
struct sk_buff *skb = tp->tx_buffers[i].skb;
|
||||
|
||||
if (skb != NULL) {
|
||||
@@ -177,7 +177,7 @@
|
||||
dev_kfree_skb (skb);
|
||||
}
|
||||
tp->tx_buffers[i].skb = NULL;
|
||||
@@ -843,7 +868,7 @@ static int tulip_close (struct net_devic
|
||||
@@ -842,7 +867,7 @@ static int tulip_close (struct net_devic
|
||||
netdev_dbg(dev, "Shutting down ethercard, status was %02x\n",
|
||||
ioread32 (ioaddr + CSR5));
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
tulip_free_ring (dev);
|
||||
|
||||
@@ -874,7 +899,9 @@ static void tulip_get_drvinfo(struct net
|
||||
@@ -873,7 +898,9 @@ static void tulip_get_drvinfo(struct net
|
||||
struct tulip_private *np = netdev_priv(dev);
|
||||
strlcpy(info->driver, DRV_NAME, sizeof(info->driver));
|
||||
strlcpy(info->version, DRV_VERSION, sizeof(info->version));
|
||||
@@ -196,7 +196,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -887,7 +914,9 @@ static int tulip_ethtool_set_wol(struct
|
||||
@@ -886,7 +913,9 @@ static int tulip_ethtool_set_wol(struct
|
||||
return -EOPNOTSUPP;
|
||||
|
||||
tp->wolinfo.wolopts = wolinfo->wolopts;
|
||||
@@ -207,7 +207,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1165,9 +1194,11 @@ static void set_rx_mode(struct net_devic
|
||||
@@ -1164,9 +1193,11 @@ static void set_rx_mode(struct net_devic
|
||||
|
||||
tp->tx_buffers[entry].skb = NULL;
|
||||
tp->tx_buffers[entry].mapping =
|
||||
@@ -219,7 +219,7 @@
|
||||
/* Put the setup frame on the Tx list. */
|
||||
if (entry == TX_RING_SIZE-1)
|
||||
tx_flags |= DESC_RING_WRAP; /* Wrap ring. */
|
||||
@@ -1264,19 +1295,22 @@ out:
|
||||
@@ -1263,19 +1294,22 @@ out:
|
||||
netdev_dbg(dev, "MWI config cacheline=%d, csr0=%08x\n",
|
||||
cache, csr0);
|
||||
}
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
static const struct net_device_ops tulip_netdev_ops = {
|
||||
.ndo_open = tulip_open,
|
||||
@@ -1294,6 +1328,7 @@ static const struct net_device_ops tulip
|
||||
@@ -1293,6 +1327,7 @@ static const struct net_device_ops tulip
|
||||
#endif
|
||||
};
|
||||
|
||||
@@ -251,7 +251,7 @@
|
||||
const struct pci_device_id early_486_chipsets[] = {
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82424) },
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496) },
|
||||
@@ -1471,6 +1506,8 @@ static int tulip_init_one(struct pci_dev
|
||||
@@ -1470,6 +1505,8 @@ static int tulip_init_one(struct pci_dev
|
||||
}
|
||||
}
|
||||
tp->pdev = pdev;
|
||||
@@ -260,7 +260,7 @@
|
||||
tp->base_addr = ioaddr;
|
||||
tp->revision = pdev->revision;
|
||||
tp->csr0 = csr0;
|
||||
@@ -1801,6 +1838,7 @@ err_out_free_netdev:
|
||||
@@ -1800,6 +1837,7 @@ err_out_free_netdev:
|
||||
}
|
||||
|
||||
|
||||
@@ -268,7 +268,7 @@
|
||||
/* set the registers according to the given wolopts */
|
||||
static void tulip_set_wolopts (struct pci_dev *pdev, u32 wolopts)
|
||||
{
|
||||
@@ -1829,6 +1867,7 @@ static void tulip_set_wolopts (struct pc
|
||||
@@ -1828,6 +1866,7 @@ static void tulip_set_wolopts (struct pc
|
||||
iowrite32(tmp, ioaddr + CSR13);
|
||||
}
|
||||
}
|
||||
@@ -276,7 +276,7 @@
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
|
||||
@@ -1943,6 +1982,7 @@ static void tulip_remove_one(struct pci_
|
||||
@@ -1942,6 +1981,7 @@ static void tulip_remove_one(struct pci_
|
||||
|
||||
/* pci_power_off (pdev, -1); */
|
||||
}
|
||||
@@ -284,7 +284,7 @@
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
/*
|
||||
@@ -1964,7 +2004,8 @@ static void poll_tulip (struct net_devic
|
||||
@@ -1963,7 +2003,8 @@ static void poll_tulip (struct net_devic
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
.name = DRV_NAME,
|
||||
.id_table = tulip_pci_tbl,
|
||||
.probe = tulip_init_one,
|
||||
@@ -1974,10 +2015,12 @@ static struct pci_driver tulip_driver =
|
||||
@@ -1973,10 +2014,12 @@ static struct pci_driver tulip_driver =
|
||||
.resume = tulip_resume,
|
||||
#endif /* CONFIG_PM */
|
||||
};
|
||||
@@ -307,7 +307,7 @@
|
||||
#ifdef MODULE
|
||||
pr_info("%s", version);
|
||||
#endif
|
||||
@@ -1987,13 +2030,18 @@ static int __init tulip_init (void)
|
||||
@@ -1992,13 +2035,18 @@ static int __init tulip_init (void)
|
||||
tulip_max_interrupt_work = max_interrupt_work;
|
||||
|
||||
/* probe for and init boards */
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <linux/delay.h>
|
||||
#include <linux/mii.h>
|
||||
#include <linux/crc32.h>
|
||||
@@ -204,6 +206,9 @@ struct tulip_chip_table tulip_tbl[] = {
|
||||
@@ -203,6 +205,9 @@ struct tulip_chip_table tulip_tbl[] = {
|
||||
{ "Conexant LANfinity", 256, 0x0001ebef,
|
||||
HAS_MII | HAS_ACPI, tulip_timer, tulip_media_task },
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
};
|
||||
|
||||
|
||||
@@ -377,6 +382,11 @@ static void tulip_up(struct net_device *
|
||||
@@ -376,6 +381,11 @@ static void tulip_up(struct net_device *
|
||||
sizeof(tp->setup_frame),
|
||||
PCI_DMA_TODEVICE);
|
||||
#endif
|
||||
@@ -48,7 +48,7 @@
|
||||
tp->tx_buffers[tp->cur_tx].skb = NULL;
|
||||
tp->tx_buffers[tp->cur_tx].mapping = mapping;
|
||||
|
||||
@@ -396,6 +406,7 @@ static void tulip_up(struct net_device *
|
||||
@@ -395,6 +405,7 @@ static void tulip_up(struct net_device *
|
||||
i = 0;
|
||||
if (tp->mtable == NULL)
|
||||
goto media_picked;
|
||||
@@ -56,7 +56,7 @@
|
||||
if (dev->if_port) {
|
||||
int looking_for = tulip_media_cap[dev->if_port] & MediaIsMII ? 11 :
|
||||
(dev->if_port == 12 ? 0 : dev->if_port);
|
||||
@@ -489,6 +500,10 @@ media_picked:
|
||||
@@ -488,6 +499,10 @@ media_picked:
|
||||
iowrite32(ioread32(ioaddr + 0x88) | 1, ioaddr + 0x88);
|
||||
dev->if_port = tp->mii_cnt ? 11 : 0;
|
||||
tp->csr6 = 0x00040000;
|
||||
@@ -67,7 +67,7 @@
|
||||
} else if (tp->chip_id == AX88140) {
|
||||
tp->csr6 = tp->mii_cnt ? 0x00040100 : 0x00000100;
|
||||
} else
|
||||
@@ -660,6 +675,10 @@ static void tulip_init_ring(struct net_d
|
||||
@@ -659,6 +674,10 @@ static void tulip_init_ring(struct net_d
|
||||
mapping = pci_map_single(tp->pdev, skb->data,
|
||||
PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
|
||||
#endif
|
||||
@@ -78,7 +78,7 @@
|
||||
tp->rx_buffers[i].mapping = mapping;
|
||||
tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */
|
||||
tp->rx_ring[i].buffer1 = cpu_to_le32(mapping);
|
||||
@@ -696,6 +715,11 @@ tulip_start_xmit(struct sk_buff *skb, st
|
||||
@@ -695,6 +714,11 @@ tulip_start_xmit(struct sk_buff *skb, st
|
||||
mapping = pci_map_single(tp->pdev, skb->data,
|
||||
skb->len, PCI_DMA_TODEVICE);
|
||||
#endif
|
||||
@@ -90,7 +90,7 @@
|
||||
tp->tx_buffers[entry].mapping = mapping;
|
||||
tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping);
|
||||
|
||||
@@ -752,6 +776,13 @@ static void tulip_clean_tx_ring(struct t
|
||||
@@ -751,6 +775,13 @@ static void tulip_clean_tx_ring(struct t
|
||||
sizeof(tp->setup_frame),
|
||||
PCI_DMA_TODEVICE);
|
||||
#endif
|
||||
@@ -104,7 +104,7 @@
|
||||
continue;
|
||||
}
|
||||
#ifdef CONFIG_TULIP_PCI
|
||||
@@ -759,6 +790,11 @@ static void tulip_clean_tx_ring(struct t
|
||||
@@ -758,6 +789,11 @@ static void tulip_clean_tx_ring(struct t
|
||||
tp->tx_buffers[entry].skb->len,
|
||||
PCI_DMA_TODEVICE);
|
||||
#endif
|
||||
@@ -116,7 +116,7 @@
|
||||
|
||||
/* Free the original skb. */
|
||||
dev_kfree_skb_irq(tp->tx_buffers[entry].skb);
|
||||
@@ -836,6 +872,10 @@ static void tulip_free_ring (struct net_
|
||||
@@ -835,6 +871,10 @@ static void tulip_free_ring (struct net_
|
||||
pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ,
|
||||
PCI_DMA_FROMDEVICE);
|
||||
#endif
|
||||
@@ -127,7 +127,7 @@
|
||||
dev_kfree_skb (skb);
|
||||
}
|
||||
}
|
||||
@@ -848,6 +888,10 @@ static void tulip_free_ring (struct net_
|
||||
@@ -847,6 +887,10 @@ static void tulip_free_ring (struct net_
|
||||
pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping,
|
||||
skb->len, PCI_DMA_TODEVICE);
|
||||
#endif
|
||||
@@ -138,7 +138,7 @@
|
||||
dev_kfree_skb (skb);
|
||||
}
|
||||
tp->tx_buffers[i].skb = NULL;
|
||||
@@ -902,6 +946,9 @@ static void tulip_get_drvinfo(struct net
|
||||
@@ -901,6 +945,9 @@ static void tulip_get_drvinfo(struct net
|
||||
#ifdef CONFIG_TULIP_PCI
|
||||
strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info));
|
||||
#endif
|
||||
@@ -148,7 +148,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -917,6 +964,9 @@ static int tulip_ethtool_set_wol(struct
|
||||
@@ -916,6 +963,9 @@ static int tulip_ethtool_set_wol(struct
|
||||
#ifdef CONFIG_TULIP_PCI
|
||||
device_set_wakeup_enable(tp->kdev, tp->wolinfo.wolopts);
|
||||
#endif
|
||||
@@ -158,7 +158,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1192,13 +1242,20 @@ static void set_rx_mode(struct net_devic
|
||||
@@ -1191,13 +1241,20 @@ static void set_rx_mode(struct net_devic
|
||||
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@
|
||||
/* Put the setup frame on the Tx list. */
|
||||
if (entry == TX_RING_SIZE-1)
|
||||
tx_flags |= DESC_RING_WRAP; /* Wrap ring. */
|
||||
@@ -1218,6 +1275,9 @@ static void set_rx_mode(struct net_devic
|
||||
@@ -1217,6 +1274,9 @@ static void set_rx_mode(struct net_devic
|
||||
spin_unlock_irqrestore(&tp->lock, flags);
|
||||
}
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
iowrite32(csr6, ioaddr + CSR6);
|
||||
}
|
||||
|
||||
@@ -1984,6 +2044,126 @@ static void tulip_remove_one(struct pci_
|
||||
@@ -1983,6 +2043,126 @@ static void tulip_remove_one(struct pci_
|
||||
}
|
||||
#endif /* CONFIG_TULIP_PCI */
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
/*
|
||||
* Polling 'interrupt' - used by things like netconsole to send skbs
|
||||
@@ -2017,6 +2197,17 @@ static struct pci_driver tulip_pci_drive
|
||||
@@ -2016,6 +2196,17 @@ static struct pci_driver tulip_pci_drive
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -335,7 +335,7 @@
|
||||
|
||||
static int __init tulip_init (void)
|
||||
{
|
||||
@@ -2033,6 +2224,9 @@ static int __init tulip_init (void)
|
||||
@@ -2038,6 +2229,9 @@ static int __init tulip_init (void)
|
||||
#ifdef CONFIG_TULIP_PCI
|
||||
ret = pci_register_driver(&tulip_pci_driver);
|
||||
#endif
|
||||
@@ -345,7 +345,7 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2042,6 +2236,9 @@ static void __exit tulip_cleanup (void)
|
||||
@@ -2047,6 +2241,9 @@ static void __exit tulip_cleanup (void)
|
||||
#ifdef CONFIG_TULIP_PCI
|
||||
pci_unregister_driver (&tulip_pci_driver);
|
||||
#endif
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
};
|
||||
|
||||
/* Uart divisor latch read */
|
||||
@@ -3174,7 +3181,11 @@ static void serial8250_console_putchar(s
|
||||
@@ -3168,7 +3175,11 @@ static void serial8250_console_putchar(s
|
||||
{
|
||||
struct uart_8250_port *up = up_to_u8250p(port);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ethernet/ti/cpmac.c
|
||||
+++ b/drivers/net/ethernet/ti/cpmac.c
|
||||
@@ -1146,6 +1146,8 @@ static int cpmac_probe(struct platform_d
|
||||
@@ -1147,6 +1147,8 @@ static int cpmac_probe(struct platform_d
|
||||
goto out;
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
dev->irq = platform_get_irq_byname(pdev, "irq");
|
||||
|
||||
dev->netdev_ops = &cpmac_netdev_ops;
|
||||
@@ -1227,7 +1229,7 @@ int cpmac_init(void)
|
||||
@@ -1228,7 +1230,7 @@ int cpmac_init(void)
|
||||
cpmac_mii->reset = cpmac_mdio_reset;
|
||||
cpmac_mii->irq = mii_irqs;
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
if (!cpmac_mii->priv) {
|
||||
pr_err("Can't ioremap mdio registers\n");
|
||||
@@ -1238,10 +1240,16 @@ int cpmac_init(void)
|
||||
#warning FIXME: unhardcode gpio&reset bits
|
||||
@@ -1239,10 +1241,16 @@ int cpmac_init(void)
|
||||
/* FIXME: unhardcode gpio&reset bits */
|
||||
ar7_gpio_disable(26);
|
||||
ar7_gpio_disable(27);
|
||||
- ar7_device_reset(AR7_RESET_BIT_CPMAC_LO);
|
||||
@@ -37,7 +37,7 @@
|
||||
cpmac_mii->reset(cpmac_mii);
|
||||
|
||||
for (i = 0; i < 300; i++) {
|
||||
@@ -1258,7 +1266,11 @@ int cpmac_init(void)
|
||||
@@ -1259,7 +1267,11 @@ int cpmac_init(void)
|
||||
mask = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/icmpv6.h>
|
||||
@@ -837,10 +838,10 @@ static void tcp_v6_send_response(struct
|
||||
@@ -844,10 +845,10 @@ static void tcp_v6_send_response(struct
|
||||
topt = (__be32 *)(t1 + 1);
|
||||
|
||||
if (tsecr) {
|
||||
@@ -237,7 +237,7 @@
|
||||
*/
|
||||
--- a/net/ipv6/datagram.c
|
||||
+++ b/net/ipv6/datagram.c
|
||||
@@ -386,7 +386,7 @@ int ipv6_recv_error(struct sock *sk, str
|
||||
@@ -390,7 +390,7 @@ int ipv6_recv_error(struct sock *sk, str
|
||||
ipv6_iface_scope_id(&sin->sin6_addr,
|
||||
IP6CB(skb)->iif);
|
||||
} else {
|
||||
@@ -246,7 +246,7 @@
|
||||
&sin->sin6_addr);
|
||||
sin->sin6_scope_id = 0;
|
||||
}
|
||||
@@ -720,12 +720,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
@@ -724,12 +724,12 @@ int ip6_datagram_send_ctl(struct net *ne
|
||||
}
|
||||
|
||||
if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
|
||||
@@ -263,16 +263,7 @@
|
||||
case IPV6_2292HOPOPTS:
|
||||
--- a/net/ipv6/ip6_gre.c
|
||||
+++ b/net/ipv6/ip6_gre.c
|
||||
@@ -394,7 +394,7 @@ static void ip6gre_err(struct sk_buff *s
|
||||
|
||||
t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr,
|
||||
flags & GRE_KEY ?
|
||||
- *(((__be32 *)p) + (grehlen / 4) - 1) : 0,
|
||||
+ net_hdr_word(((__be32 *)p) + (grehlen / 4) - 1) : 0,
|
||||
p[1]);
|
||||
if (t == NULL)
|
||||
return;
|
||||
@@ -476,11 +476,11 @@ static int ip6gre_rcv(struct sk_buff *sk
|
||||
@@ -479,11 +479,11 @@ static int ip6gre_rcv(struct sk_buff *sk
|
||||
offset += 4;
|
||||
}
|
||||
if (flags&GRE_KEY) {
|
||||
@@ -286,7 +277,7 @@
|
||||
offset += 4;
|
||||
}
|
||||
}
|
||||
@@ -745,7 +745,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
|
||||
@@ -748,7 +748,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
|
||||
|
||||
if (tunnel->parms.o_flags&GRE_SEQ) {
|
||||
++tunnel->o_seqno;
|
||||
@@ -295,7 +286,7 @@
|
||||
ptr--;
|
||||
}
|
||||
if (tunnel->parms.o_flags&GRE_KEY) {
|
||||
@@ -841,7 +841,7 @@ static inline int ip6gre_xmit_ipv6(struc
|
||||
@@ -844,7 +844,7 @@ static inline int ip6gre_xmit_ipv6(struc
|
||||
|
||||
dsfield = ipv6_get_dsfield(ipv6h);
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
|
||||
@@ -306,7 +297,7 @@
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
|
||||
--- a/net/ipv6/ip6_tunnel.c
|
||||
+++ b/net/ipv6/ip6_tunnel.c
|
||||
@@ -1291,7 +1291,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1301,7 +1301,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
|
||||
dsfield = ipv6_get_dsfield(ipv6h);
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
|
||||
@@ -615,7 +606,7 @@
|
||||
goto next_ht;
|
||||
--- a/net/ipv6/ip6_offload.c
|
||||
+++ b/net/ipv6/ip6_offload.c
|
||||
@@ -221,7 +221,7 @@ static struct sk_buff **ipv6_gro_receive
|
||||
@@ -224,7 +224,7 @@ static struct sk_buff **ipv6_gro_receive
|
||||
continue;
|
||||
|
||||
iph2 = (struct ipv6hdr *)(p->data + off);
|
||||
@@ -626,7 +617,7 @@
|
||||
* XXX skbs on the gro_list have all been parsed and pulled
|
||||
--- a/include/net/addrconf.h
|
||||
+++ b/include/net/addrconf.h
|
||||
@@ -43,7 +43,7 @@ struct prefix_info {
|
||||
@@ -45,7 +45,7 @@ struct prefix_info {
|
||||
__be32 reserved2;
|
||||
|
||||
struct in6_addr prefix;
|
||||
@@ -840,7 +831,7 @@
|
||||
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -3683,14 +3683,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
@@ -3682,14 +3682,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||
{
|
||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||
|
||||
|
||||
@@ -496,7 +496,7 @@
|
||||
return 1;
|
||||
|
||||
ret = read_sr(nor);
|
||||
@@ -880,11 +896,11 @@ static int spansion_quad_enable(struct s
|
||||
@@ -887,11 +903,11 @@ static int spansion_quad_enable(struct s
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -510,7 +510,7 @@
|
||||
case CFI_MFR_MACRONIX:
|
||||
status = macronix_quad_enable(nor);
|
||||
if (status) {
|
||||
@@ -910,11 +926,6 @@ static int spi_nor_check(struct spi_nor
|
||||
@@ -917,11 +933,6 @@ static int spi_nor_check(struct spi_nor
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -522,7 +522,7 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -932,16 +943,24 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -939,16 +950,24 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
@@ -551,7 +551,7 @@
|
||||
if (IS_ERR(jid)) {
|
||||
return PTR_ERR(jid);
|
||||
} else if (jid != id) {
|
||||
@@ -966,10 +985,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -973,10 +992,10 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
* up with the software protection bits set
|
||||
*/
|
||||
|
||||
@@ -566,7 +566,7 @@
|
||||
write_enable(nor);
|
||||
write_sr(nor, 0);
|
||||
}
|
||||
@@ -984,7 +1003,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -991,7 +1010,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
mtd->_read = spi_nor_read;
|
||||
|
||||
/* nor protection support for STmicro chips */
|
||||
@@ -575,7 +575,7 @@
|
||||
mtd->_lock = spi_nor_lock;
|
||||
mtd->_unlock = spi_nor_unlock;
|
||||
}
|
||||
@@ -995,9 +1014,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -1002,9 +1021,8 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
else
|
||||
mtd->_write = spi_nor_write;
|
||||
|
||||
@@ -587,7 +587,7 @@
|
||||
|
||||
#ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
|
||||
/* prefer "small sector" erase if possible */
|
||||
@@ -1038,7 +1056,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -1045,7 +1063,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
|
||||
/* Quad/Dual-read mode takes precedence over fast/normal */
|
||||
if (mode == SPI_NOR_QUAD && info->flags & SPI_NOR_QUAD_READ) {
|
||||
@@ -596,7 +596,7 @@
|
||||
if (ret) {
|
||||
dev_err(dev, "quad mode not supported\n");
|
||||
return ret;
|
||||
@@ -1074,7 +1092,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -1081,7 +1099,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
else if (mtd->size > 0x1000000) {
|
||||
/* enable 4-byte addressing if the device exceeds 16MiB */
|
||||
nor->addr_width = 4;
|
||||
@@ -605,7 +605,7 @@
|
||||
/* Dedicated 4-byte command set */
|
||||
switch (nor->flash_read) {
|
||||
case SPI_NOR_QUAD:
|
||||
@@ -1095,7 +1113,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -1102,7 +1120,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
nor->erase_opcode = SPINOR_OP_SE_4B;
|
||||
mtd->erasesize = info->sector_size;
|
||||
} else
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
|
||||
/* PMC */
|
||||
{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
|
||||
@@ -896,6 +896,45 @@ static int spansion_quad_enable(struct s
|
||||
@@ -903,6 +903,45 @@ static int spansion_quad_enable(struct s
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
static int set_quad_mode(struct spi_nor *nor, struct flash_info *info)
|
||||
{
|
||||
int status;
|
||||
@@ -908,6 +947,13 @@ static int set_quad_mode(struct spi_nor
|
||||
@@ -915,6 +954,13 @@ static int set_quad_mode(struct spi_nor
|
||||
return -EINVAL;
|
||||
}
|
||||
return status;
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
|
||||
|
||||
--- a/drivers/char/Kconfig
|
||||
+++ b/drivers/char/Kconfig
|
||||
@@ -581,6 +581,8 @@ config DEVPORT
|
||||
@@ -583,6 +583,8 @@ config DEVPORT
|
||||
|
||||
source "drivers/s390/char/Kconfig"
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel.
|
||||
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -4932,7 +4932,7 @@ static void port_event(struct usb_hub *h
|
||||
@@ -4933,7 +4933,7 @@ static void port_event(struct usb_hub *h
|
||||
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
|
||||
u16 status = 0, unused;
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ support code with each new device.
|
||||
mmc_of_parse(mmc);
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -1086,8 +1086,12 @@ static struct debugfs_blob_wrapper flat_
|
||||
@@ -1092,8 +1092,12 @@ static struct debugfs_blob_wrapper flat_
|
||||
|
||||
static int __init of_flat_dt_debugfs_export_fdt(void)
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option
|
||||
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -901,22 +901,38 @@ int __init early_init_dt_scan_chosen(uns
|
||||
@@ -907,22 +907,38 @@ int __init early_init_dt_scan_chosen(uns
|
||||
|
||||
/* Retrieve command line */
|
||||
p = of_get_flat_dt_prop(node, "bootargs", &l);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
/*
|
||||
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
|
||||
@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
@@ -332,12 +333,23 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
if (buf[0] == NVRAM_HEADER) {
|
||||
bcm47xxpart_add_part(&parts[curr_part++], "nvram",
|
||||
master->size - blocksize, 0);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
--- a/arch/arm/mach-cns3xxx/Makefile
|
||||
+++ b/arch/arm/mach-cns3xxx/Makefile
|
||||
@@ -5,3 +5,5 @@ cns3xxx-y += core.o pm.o
|
||||
cns3xxx-$(CONFIG_ATAGS) += devices.o
|
||||
@@ -6,3 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o
|
||||
cns3xxx-$(CONFIG_PCI) += pcie.o
|
||||
CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here
|
||||
cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o
|
||||
+cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o
|
||||
+cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
|
||||
--- a/arch/arm/mach-cns3xxx/Makefile
|
||||
+++ b/arch/arm/mach-cns3xxx/Makefile
|
||||
@@ -5,5 +5,5 @@ cns3xxx-y += core.o pm.o
|
||||
cns3xxx-$(CONFIG_ATAGS) += devices.o
|
||||
@@ -6,5 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o
|
||||
cns3xxx-$(CONFIG_PCI) += pcie.o
|
||||
CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here
|
||||
cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o
|
||||
-cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o
|
||||
+cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
+cns3xxx-y += core.o pm.o gpio.o
|
||||
cns3xxx-$(CONFIG_ATAGS) += devices.o
|
||||
cns3xxx-$(CONFIG_PCI) += pcie.o
|
||||
cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o
|
||||
CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here
|
||||
--- a/arch/arm/mach-cns3xxx/cns3xxx.h
|
||||
+++ b/arch/arm/mach-cns3xxx/cns3xxx.h
|
||||
@@ -68,8 +68,10 @@
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
endif
|
||||
--- a/arch/arm/mach-cns3xxx/Makefile
|
||||
+++ b/arch/arm/mach-cns3xxx/Makefile
|
||||
@@ -7,3 +7,5 @@ cns3xxx-$(CONFIG_PCI) += pcie.o
|
||||
@@ -8,3 +8,5 @@ CFLAGS_pcie.o += -Wframe-larger-than=
|
||||
cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o
|
||||
cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o
|
||||
cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
offset + trx->offset[i],
|
||||
0);
|
||||
i++;
|
||||
@@ -205,7 +235,8 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
@@ -203,7 +233,8 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
}
|
||||
|
||||
/* Squashfs on devices not using TRX */
|
||||
|
||||
@@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1521,6 +1521,8 @@ static int bgmac_probe(struct bcma_devic
|
||||
if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM)
|
||||
bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n");
|
||||
|
||||
@@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
err = bgmac_mii_register(bgmac);
|
||||
if (err) {
|
||||
bgmac_err(bgmac, "Cannot register MDIO\n");
|
||||
@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1535,8 +1537,6 @@ static int bgmac_probe(struct bcma_devic
|
||||
|
||||
netif_carrier_off(net_dev);
|
||||
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return 0;
|
||||
|
||||
err_mii_unregister:
|
||||
@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev
|
||||
@@ -1555,9 +1555,9 @@ static void bgmac_remove(struct bcma_dev
|
||||
{
|
||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From 21697336d46b71dd031f29e426dda0b1e7f06cc0 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
||||
Date: Wed, 11 Feb 2015 18:06:34 +0100
|
||||
Subject: [PATCH] bgmac: fix device initialization on Northstar SoCs (condition
|
||||
typo)
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
On Northstar (Broadcom's ARM architecture) we need to manually enable
|
||||
all cores. Code for that is already in place, but the condition for it
|
||||
was wrong.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
drivers/net/ethernet/broadcom/bgmac.c | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct
|
||||
/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
|
||||
static int bgmac_probe(struct bcma_device *core)
|
||||
{
|
||||
+ struct bcma_chipinfo *ci = &core->bus->chipinfo;
|
||||
struct net_device *net_dev;
|
||||
struct bgmac *bgmac;
|
||||
struct ssb_sprom *sprom = &core->bus->sprom;
|
||||
@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_devic
|
||||
bgmac_chip_reset(bgmac);
|
||||
|
||||
/* For Northstar, we have to take all GMAC core out of reset */
|
||||
- if (core->id.id == BCMA_CHIP_ID_BCM4707 ||
|
||||
- core->id.id == BCMA_CHIP_ID_BCM53018) {
|
||||
+ if (ci->id == BCMA_CHIP_ID_BCM4707 ||
|
||||
+ ci->id == BCMA_CHIP_ID_BCM53018) {
|
||||
struct bcma_device *ns_core;
|
||||
int ns_gmac;
|
||||
|
||||
@@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1583,6 +1657,10 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1588,6 +1662,10 @@ static int bgmac_probe(struct bcma_devic
|
||||
goto err_dma_free;
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
pr_err("Unsupported core_unit %d\n", core->core_unit);
|
||||
return -ENOTSUPP;
|
||||
}
|
||||
@@ -1588,8 +1597,17 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1593,8 +1602,17 @@ static int bgmac_probe(struct bcma_devic
|
||||
}
|
||||
bgmac->cmn = core->bus->drv_gmac_cmn.core;
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
struct net_device *net_dev;
|
||||
struct bgmac *bgmac;
|
||||
struct ssb_sprom *sprom = &core->bus->sprom;
|
||||
@@ -1626,8 +1629,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1631,8 +1634,7 @@ static int bgmac_probe(struct bcma_devic
|
||||
bgmac_chip_reset(bgmac);
|
||||
|
||||
/* For Northstar, we have to take all GMAC core out of reset */
|
||||
|
||||
@@ -19,9 +19,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/ethernet/broadcom/bgmac.c
|
||||
+++ b/drivers/net/ethernet/broadcom/bgmac.c
|
||||
@@ -1578,6 +1578,11 @@ static int bgmac_probe(struct bcma_devic
|
||||
dev_warn(&core->dev, "Using random MAC: %pM\n", mac);
|
||||
}
|
||||
@@ -1583,6 +1583,11 @@ static int bgmac_probe(struct bcma_devic
|
||||
*/
|
||||
bcma_core_enable(core, 0);
|
||||
|
||||
+ /* This (reset &) enable is not preset in specs or reference driver but
|
||||
+ * Broadcom does it in arch PCI code when enabling fake PCI device.
|
||||
|
||||
@@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
u32 portid;
|
||||
|
||||
net = sock_net(skb->sk);
|
||||
@@ -971,9 +976,7 @@ static void nl_fib_input(struct sk_buff
|
||||
@@ -972,9 +977,7 @@ static void nl_fib_input(struct sk_buff
|
||||
nlh = nlmsg_hdr(skb);
|
||||
|
||||
frn = (struct fib_result_nl *) nlmsg_data(nlh);
|
||||
|
||||
@@ -44,7 +44,7 @@ Closes 20532
|
||||
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -597,20 +597,22 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
@@ -600,20 +600,22 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
}
|
||||
mtu -= hlen + sizeof(struct frag_hdr);
|
||||
|
||||
@@ -69,7 +69,7 @@ Closes 20532
|
||||
goto slow_path_clean;
|
||||
|
||||
/* Partially cloned skb? */
|
||||
@@ -627,8 +629,6 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
@@ -630,8 +632,6 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
|
||||
err = 0;
|
||||
offset = 0;
|
||||
@@ -78,7 +78,7 @@ Closes 20532
|
||||
/* BUILD HEADER */
|
||||
|
||||
*prevhdr = NEXTHDR_FRAGMENT;
|
||||
@@ -636,8 +636,11 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
@@ -639,8 +639,11 @@ int ip6_fragment(struct sk_buff *skb, in
|
||||
if (!tmp_hdr) {
|
||||
IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
|
||||
IPSTATS_MIB_FRAGFAILS);
|
||||
@@ -91,7 +91,7 @@ Closes 20532
|
||||
|
||||
__skb_pull(skb, hlen);
|
||||
fh = (struct frag_hdr *)__skb_push(skb, sizeof(struct frag_hdr));
|
||||
@@ -735,7 +738,6 @@ slow_path:
|
||||
@@ -738,7 +741,6 @@ slow_path:
|
||||
*/
|
||||
|
||||
*prevhdr = NEXTHDR_FRAGMENT;
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
||||
Date: Sat, 5 Dec 2015 02:03:32 +0100
|
||||
Subject: [PATCH] mtd: bcm47xxpart: limit scanned flash area on BCM47XX (MIPS)
|
||||
only
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
We allowed using bcm47xxpart on BCM5301X arch with commit:
|
||||
9e3afa5f5c7 ("mtd: bcm47xxpart: allow enabling on ARCH_BCM_5301X")
|
||||
|
||||
BCM5301X devices may contain some partitions in higher memory, e.g.
|
||||
Netgear R8000 has board_data at 0x2600000. To detect them we should
|
||||
use size limit on MIPS only.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
---
|
||||
drivers/mtd/bcm47xxpart.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/mtd/bcm47xxpart.c
|
||||
+++ b/drivers/mtd/bcm47xxpart.c
|
||||
@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
/* Parse block by block looking for magics */
|
||||
for (offset = 0; offset <= master->size - blocksize;
|
||||
offset += blocksize) {
|
||||
- /* Nothing more in higher memory */
|
||||
- if (offset >= 0x2000000)
|
||||
+ /* Nothing more in higher memory on BCM47XX (MIPS) */
|
||||
+ if (config_enabled(CONFIG_BCM47XX) && offset >= 0x2000000)
|
||||
break;
|
||||
|
||||
if (curr_part >= BCM47XXPART_MAX_PARTS) {
|
||||
@@ -58,7 +58,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
@@ -252,10 +256,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
}
|
||||
|
||||
/* Read middle of the block */
|
||||
@@ -74,7 +74,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
@@ -275,10 +280,11 @@ static int bcm47xxpart_parse(struct mtd_
|
||||
}
|
||||
|
||||
offset = master->size - possible_nvram_sizes[i];
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
From a95f03e51471dbdbafd3391991d867ac2358ed02 Mon Sep 17 00:00:00 2001
|
||||
From: Jonas Gorski <jogo@openwrt.org>
|
||||
Date: Sun, 23 Aug 2015 14:23:29 +0200
|
||||
Subject: [PATCH] usb: ehci-orion: fix probe for !GENERIC_PHY
|
||||
|
||||
Commit d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
|
||||
added support for optional phys, but devm_phy_optional_get returns
|
||||
-ENOSYS if GENERIC_PHY is not enabled.
|
||||
|
||||
This causes probe failures, even when there are no phys specified:
|
||||
|
||||
[ 1.443365] orion-ehci f1058000.usb: init f1058000.usb fail, -38
|
||||
[ 1.449403] orion-ehci: probe of f1058000.usb failed with error -38
|
||||
|
||||
Similar to dwc3, treat -ENOSYS as no phy.
|
||||
|
||||
Fixes: d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
|
||||
|
||||
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
---
|
||||
drivers/usb/host/ehci-orion.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/usb/host/ehci-orion.c
|
||||
+++ b/drivers/usb/host/ehci-orion.c
|
||||
@@ -226,7 +226,8 @@ static int ehci_orion_drv_probe(struct p
|
||||
priv->phy = devm_phy_optional_get(&pdev->dev, "usb");
|
||||
if (IS_ERR(priv->phy)) {
|
||||
err = PTR_ERR(priv->phy);
|
||||
- goto err_phy_get;
|
||||
+ if (err != -ENOSYS)
|
||||
+ goto err_phy_get;
|
||||
} else {
|
||||
err = phy_init(priv->phy);
|
||||
if (err)
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -614,9 +614,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P
|
||||
@@ -618,9 +618,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P
|
||||
KBUILD_AFLAGS += $(call cc-option,-fno-PIE)
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
|
||||
@@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
+#if defined(MODULE) && !defined(CONFIG_MODULE_STRIPPED)
|
||||
/* Creates an alias so file2alias.c can find device table. */
|
||||
#define MODULE_DEVICE_TABLE(type, name) \
|
||||
extern const struct type##_device_id __mod_##type##__##name##_device_table \
|
||||
@@ -159,7 +160,9 @@ void trim_init_extable(struct module *m)
|
||||
extern const typeof(name) __mod_##type##__##name##_device_table \
|
||||
@@ -159,7 +160,9 @@ extern const typeof(name) __mod_##type##
|
||||
*/
|
||||
|
||||
#if defined(MODULE) || !defined(CONFIG_SYSFS)
|
||||
@@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
#else
|
||||
#define MODULE_VERSION(_version) \
|
||||
static struct module_version_attribute ___modver_attr = { \
|
||||
@@ -181,7 +184,7 @@ void trim_init_extable(struct module *m)
|
||||
@@ -181,7 +184,7 @@ extern const typeof(name) __mod_##type##
|
||||
/* Optional firmware file (or files) needed by the module
|
||||
* format is simply firmware file name. Multiple firmware
|
||||
* files require multiple MODULE_FIRMWARE() specifiers */
|
||||
@@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
set_license(mod, get_modinfo(info, "license"));
|
||||
--- a/scripts/mod/modpost.c
|
||||
+++ b/scripts/mod/modpost.c
|
||||
@@ -1726,7 +1726,9 @@ static void read_symbols(char *modname)
|
||||
@@ -1758,7 +1758,9 @@ static void read_symbols(char *modname)
|
||||
symname = remove_dot(info.strtab + sym->st_name);
|
||||
|
||||
handle_modversions(mod, &info, sym, symname);
|
||||
@@ -137,7 +137,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
}
|
||||
if (!is_vmlinux(modname) ||
|
||||
(is_vmlinux(modname) && vmlinux_section_warnings))
|
||||
@@ -1870,7 +1872,9 @@ static void add_header(struct buffer *b,
|
||||
@@ -1902,7 +1904,9 @@ static void add_header(struct buffer *b,
|
||||
buf_printf(b, "#include <linux/vermagic.h>\n");
|
||||
buf_printf(b, "#include <linux/compiler.h>\n");
|
||||
buf_printf(b, "\n");
|
||||
@@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
buf_printf(b, "\n");
|
||||
buf_printf(b, "__visible struct module __this_module\n");
|
||||
buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
|
||||
@@ -1887,16 +1891,20 @@ static void add_header(struct buffer *b,
|
||||
@@ -1919,16 +1923,20 @@ static void add_header(struct buffer *b,
|
||||
|
||||
static void add_intree_flag(struct buffer *b, int is_intree)
|
||||
{
|
||||
@@ -168,7 +168,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1989,11 +1997,13 @@ static void add_depends(struct buffer *b
|
||||
@@ -2021,11 +2029,13 @@ static void add_depends(struct buffer *b
|
||||
|
||||
static void add_srcversion(struct buffer *b, struct module *mod)
|
||||
{
|
||||
@@ -182,7 +182,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
}
|
||||
|
||||
static void write_if_changed(struct buffer *b, const char *fname)
|
||||
@@ -2224,7 +2234,9 @@ int main(int argc, char **argv)
|
||||
@@ -2256,7 +2266,9 @@ int main(int argc, char **argv)
|
||||
add_staging_flag(&buf, mod->name);
|
||||
err |= add_versions(&buf, mod);
|
||||
add_depends(&buf, mod, modules);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/spi-nor/spi-nor.c
|
||||
+++ b/drivers/mtd/spi-nor/spi-nor.c
|
||||
@@ -963,6 +963,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
@@ -970,6 +970,7 @@ int spi_nor_scan(struct spi_nor *nor, co
|
||||
|
||||
if (JEDEC_MFR(info->jedec_id) == CFI_MFR_ATMEL ||
|
||||
JEDEC_MFR(info->jedec_id) == CFI_MFR_INTEL ||
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
config CRYPTO_ANSI_CPRNG
|
||||
--- a/crypto/Makefile
|
||||
+++ b/crypto/Makefile
|
||||
@@ -89,6 +89,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.
|
||||
@@ -91,6 +91,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.
|
||||
obj-$(CONFIG_CRYPTO_LZO) += lzo.o
|
||||
obj-$(CONFIG_CRYPTO_LZ4) += lz4.o
|
||||
obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
#define PACKET_FANOUT_LB 1
|
||||
--- a/net/packet/af_packet.c
|
||||
+++ b/net/packet/af_packet.c
|
||||
@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1529,6 +1529,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sockaddr_pkt *spkt;
|
||||
@@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
/*
|
||||
* When we registered the protocol we saved the socket in the data
|
||||
@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1536,6 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
*/
|
||||
|
||||
sk = pt->af_packet_priv;
|
||||
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
/*
|
||||
* Yank back the headers [hope the device set this
|
||||
@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1548,7 +1550,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
* so that this procedure is noop.
|
||||
*/
|
||||
|
||||
@@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
goto out;
|
||||
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
@@ -1747,12 +1749,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
int skb_len = skb->len;
|
||||
unsigned int snaplen, res;
|
||||
|
||||
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
@@ -1872,12 +1874,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
|
||||
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
|
||||
|
||||
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net
|
||||
@@ -2831,6 +2833,7 @@ static int packet_create(struct net *net
|
||||
spin_lock_init(&po->bind_lock);
|
||||
mutex_init(&po->pg_vec_lock);
|
||||
po->prot_hook.func = packet_rcv;
|
||||
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3409,6 +3412,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3425,6 +3428,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3460,6 +3473,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3476,6 +3489,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/include/net/addrconf.h
|
||||
+++ b/include/net/addrconf.h
|
||||
@@ -88,6 +88,12 @@ int ipv6_rcv_saddr_equal(const struct so
|
||||
@@ -90,6 +90,12 @@ int ipv6_rcv_saddr_equal(const struct so
|
||||
void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr);
|
||||
void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr);
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
|
||||
int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr,
|
||||
u32 banned_flags)
|
||||
@@ -5469,6 +5468,9 @@ int __init addrconf_init(void)
|
||||
@@ -5473,6 +5472,9 @@ int __init addrconf_init(void)
|
||||
|
||||
ipv6_addr_label_rtnl_register();
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
return 0;
|
||||
errout:
|
||||
rtnl_af_unregister(&inet6_ops);
|
||||
@@ -5488,6 +5490,9 @@ void addrconf_cleanup(void)
|
||||
@@ -5492,6 +5494,9 @@ void addrconf_cleanup(void)
|
||||
struct net_device *dev;
|
||||
int i;
|
||||
|
||||
|
||||
@@ -1,15 +1,12 @@
|
||||
--- a/net/netlink/af_netlink.c
|
||||
+++ b/net/netlink/af_netlink.c
|
||||
@@ -1721,27 +1721,7 @@ void netlink_detachskb(struct sock *sk,
|
||||
@@ -1107,24 +1107,7 @@ void netlink_detachskb(struct sock *sk,
|
||||
|
||||
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
|
||||
{
|
||||
- int delta;
|
||||
-
|
||||
WARN_ON(skb->sk != NULL);
|
||||
- if (netlink_skb_is_mmaped(skb))
|
||||
- return skb;
|
||||
-
|
||||
- delta = skb->end - skb->tail;
|
||||
- if (is_vmalloc_addr(skb->head) || delta * 2 < skb->truesize)
|
||||
- return skb;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2023,7 +2023,7 @@ static inline int pskb_network_may_pull(
|
||||
@@ -2024,7 +2024,7 @@ static inline int pskb_network_may_pull(
|
||||
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||
*/
|
||||
#ifndef NET_SKB_PAD
|
||||
|
||||
@@ -14,7 +14,7 @@ when needed.
|
||||
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2068,6 +2068,24 @@ static inline void pskb_trim_unique(stru
|
||||
@@ -2069,6 +2069,24 @@ static inline void pskb_trim_unique(stru
|
||||
BUG_ON(err);
|
||||
}
|
||||
|
||||
|
||||
@@ -145,7 +145,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
if (dev == ip6n->fb_tnl_dev)
|
||||
RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
|
||||
else
|
||||
@@ -771,6 +786,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
@@ -781,6 +796,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
|
||||
|
||||
@@ -254,7 +254,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
/**
|
||||
* ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally
|
||||
* @skb: received socket buffer
|
||||
@@ -815,6 +932,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
|
||||
@@ -825,6 +942,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
|
||||
skb_reset_network_header(skb);
|
||||
skb->protocol = htons(protocol);
|
||||
memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
|
||||
@@ -281,7 +281,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
__skb_tunnel_rx(skb, t->dev, t->net);
|
||||
|
||||
@@ -1076,6 +1213,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1086,6 +1223,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
__u8 dsfield;
|
||||
__u32 mtu;
|
||||
int err;
|
||||
@@ -289,7 +289,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if ((t->parms.proto != IPPROTO_IPIP && t->parms.proto != 0) ||
|
||||
!ip6_tnl_xmit_ctl(t))
|
||||
@@ -1095,6 +1233,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1105,6 +1243,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
|
||||
fl6.flowi6_mark = skb->mark;
|
||||
|
||||
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
|
||||
if (err != 0) {
|
||||
/* XXX: send ICMP error even if DF is not set. */
|
||||
@@ -1263,6 +1413,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1273,6 +1423,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.flowinfo = p->flowinfo;
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
@@ -323,7 +323,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
ip6_tnl_dst_reset(t);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1293,6 +1451,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1303,6 +1461,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
@@ -331,7 +331,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1568,6 +1727,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1578,6 +1737,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -347,7 +347,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1601,6 +1769,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1611,6 +1779,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_PROTO])
|
||||
parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
|
||||
@@ -394,7 +394,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
}
|
||||
|
||||
static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
|
||||
@@ -1653,6 +1861,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -1663,6 +1871,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
@@ -407,7 +407,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -1670,6 +1884,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -1680,6 +1894,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(4) +
|
||||
/* IFLA_IPTUN_PROTO */
|
||||
nla_total_size(1) +
|
||||
@@ -432,7 +432,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
0;
|
||||
}
|
||||
|
||||
@@ -1677,6 +1909,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -1687,6 +1919,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
@@ -442,7 +442,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put(skb, IFLA_IPTUN_LOCAL, sizeof(struct in6_addr),
|
||||
@@ -1687,8 +1922,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -1697,8 +1932,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
@@ -471,7 +471,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||
return 0;
|
||||
|
||||
nla_put_failure:
|
||||
@@ -1704,6 +1958,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -1714,6 +1968,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_FLOWINFO] = { .type = NLA_U32 },
|
||||
[IFLA_IPTUN_FLAGS] = { .type = NLA_U32 },
|
||||
[IFLA_IPTUN_PROTO] = { .type = NLA_U8 },
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/net/ipv6/ip6_output.c
|
||||
+++ b/net/ipv6/ip6_output.c
|
||||
@@ -903,21 +903,45 @@ static int ip6_dst_lookup_tail(struct so
|
||||
@@ -906,21 +906,45 @@ static int ip6_dst_lookup_tail(struct so
|
||||
#endif
|
||||
int err;
|
||||
|
||||
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
* Here if the dst entry we've looked up
|
||||
--- a/net/ipv6/route.c
|
||||
+++ b/net/ipv6/route.c
|
||||
@@ -2182,9 +2182,10 @@ int ip6_route_get_saddr(struct net *net,
|
||||
@@ -2184,9 +2184,10 @@ int ip6_route_get_saddr(struct net *net,
|
||||
unsigned int prefs,
|
||||
struct in6_addr *saddr)
|
||||
{
|
||||
|
||||
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case RTN_THROW:
|
||||
default:
|
||||
rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
|
||||
@@ -2139,6 +2161,17 @@ static int ip6_pkt_prohibit_out(struct s
|
||||
@@ -2141,6 +2163,17 @@ static int ip6_pkt_prohibit_out(struct s
|
||||
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
|
||||
}
|
||||
|
||||
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
/*
|
||||
* Allocate a dst for local (unicast / anycast) address.
|
||||
*/
|
||||
@@ -2363,7 +2396,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
@@ -2365,7 +2398,8 @@ static int rtm_to_fib6_config(struct sk_
|
||||
if (rtm->rtm_type == RTN_UNREACHABLE ||
|
||||
rtm->rtm_type == RTN_BLACKHOLE ||
|
||||
rtm->rtm_type == RTN_PROHIBIT ||
|
||||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
cfg->fc_flags |= RTF_REJECT;
|
||||
|
||||
if (rtm->rtm_type == RTN_LOCAL)
|
||||
@@ -2565,6 +2599,9 @@ static int rt6_fill_node(struct net *net
|
||||
@@ -2567,6 +2601,9 @@ static int rt6_fill_node(struct net *net
|
||||
case -EACCES:
|
||||
rtm->rtm_type = RTN_PROHIBIT;
|
||||
break;
|
||||
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
case -EAGAIN:
|
||||
rtm->rtm_type = RTN_THROW;
|
||||
break;
|
||||
@@ -2818,6 +2855,8 @@ static int ip6_route_dev_notify(struct n
|
||||
@@ -2825,6 +2862,8 @@ static int ip6_route_dev_notify(struct n
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
|
||||
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
|
||||
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
|
||||
#endif
|
||||
@@ -3034,6 +3073,17 @@ static int __net_init ip6_route_net_init
|
||||
@@ -3047,6 +3086,17 @@ static int __net_init ip6_route_net_init
|
||||
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
|
||||
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
|
||||
ip6_template_metrics, true);
|
||||
@@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
#endif
|
||||
|
||||
net->ipv6.sysctl.flush_delay = 0;
|
||||
@@ -3052,6 +3102,8 @@ out:
|
||||
@@ -3065,6 +3115,8 @@ out:
|
||||
return ret;
|
||||
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
out_ip6_prohibit_entry:
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
out_ip6_null_entry:
|
||||
@@ -3069,6 +3121,7 @@ static void __net_exit ip6_route_net_exi
|
||||
@@ -3082,6 +3134,7 @@ static void __net_exit ip6_route_net_exi
|
||||
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
|
||||
kfree(net->ipv6.ip6_prohibit_entry);
|
||||
kfree(net->ipv6.ip6_blk_hole_entry);
|
||||
@@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
#endif
|
||||
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
|
||||
}
|
||||
@@ -3165,6 +3218,9 @@ int __init ip6_route_init(void)
|
||||
@@ -3155,6 +3208,9 @@ void __init ip6_route_init_special_entri
|
||||
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
|
||||
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
|
||||
@@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
||||
+ init_net.ipv6.ip6_policy_failed_entry->rt6i_idev =
|
||||
+ in6_dev_get(init_net.loopback_dev);
|
||||
#endif
|
||||
ret = fib6_init();
|
||||
if (ret)
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -4002,6 +4002,9 @@ static enum gro_result dev_gro_receive(s
|
||||
@@ -4006,6 +4006,9 @@ static enum gro_result dev_gro_receive(s
|
||||
enum gro_result ret;
|
||||
int grow;
|
||||
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
if (!(skb->dev->features & NETIF_F_GRO))
|
||||
goto normal;
|
||||
|
||||
@@ -5067,6 +5070,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
@@ -5077,6 +5080,48 @@ static void __netdev_adjacent_dev_unlink
|
||||
&upper_dev->adj_list.lower);
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
static int __netdev_upper_dev_link(struct net_device *dev,
|
||||
struct net_device *upper_dev, bool master,
|
||||
void *private)
|
||||
@@ -5127,6 +5172,7 @@ static int __netdev_upper_dev_link(struc
|
||||
@@ -5137,6 +5182,7 @@ static int __netdev_upper_dev_link(struc
|
||||
goto rollback_lower_mesh;
|
||||
}
|
||||
|
||||
@@ -84,15 +84,15 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
|
||||
return 0;
|
||||
|
||||
@@ -5244,6 +5290,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
@@ -5254,6 +5300,7 @@ void netdev_upper_dev_unlink(struct net_
|
||||
list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
|
||||
__netdev_adjacent_dev_unlink(dev, i->dev);
|
||||
__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
|
||||
|
||||
+ netdev_update_addr_mask(dev);
|
||||
call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
|
||||
}
|
||||
EXPORT_SYMBOL(netdev_upper_dev_unlink);
|
||||
@@ -5763,6 +5810,7 @@ int dev_set_mac_address(struct net_devic
|
||||
@@ -5773,6 +5820,7 @@ int dev_set_mac_address(struct net_devic
|
||||
if (err)
|
||||
return err;
|
||||
dev->addr_assign_type = NET_ADDR_SET;
|
||||
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
#endif
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -597,7 +597,8 @@ struct sk_buff {
|
||||
@@ -598,7 +598,8 @@ struct sk_buff {
|
||||
#endif
|
||||
__u8 ipvs_property:1;
|
||||
__u8 inner_protocol_type:1;
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
* @phydev: the phy_device struct
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -748,6 +748,7 @@ void phy_start_machine(struct phy_device
|
||||
@@ -752,6 +752,7 @@ void phy_start_machine(struct phy_device
|
||||
void phy_stop_machine(struct phy_device *phydev);
|
||||
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
|
||||
int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
|
||||
|
||||
@@ -9,16 +9,7 @@
|
||||
{
|
||||
/* Do nothing for now */
|
||||
return 0;
|
||||
@@ -1347,7 +1347,7 @@ static struct phy_driver genphy_driver[]
|
||||
.phy_id = 0xffffffff,
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Generic PHY",
|
||||
- .soft_reset = genphy_soft_reset,
|
||||
+ .soft_reset = no_soft_reset,
|
||||
.config_init = genphy_config_init,
|
||||
.features = PHY_GBIT_FEATURES | SUPPORTED_MII |
|
||||
SUPPORTED_AUI | SUPPORTED_FIBRE |
|
||||
@@ -1362,7 +1362,7 @@ static struct phy_driver genphy_driver[]
|
||||
@@ -1364,7 +1364,7 @@ static struct phy_driver genphy_driver[]
|
||||
.phy_id = 0xffffffff,
|
||||
.phy_id_mask = 0xffffffff,
|
||||
.name = "Generic 10G PHY",
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
phy_device_free(phydev);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -785,4 +785,22 @@ int __init mdio_bus_init(void);
|
||||
@@ -789,4 +789,22 @@ int __init mdio_bus_init(void);
|
||||
void mdio_bus_exit(void);
|
||||
|
||||
extern struct bus_type mdio_bus_type;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
*/
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -2054,6 +2054,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
@@ -2055,6 +2055,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
/**
|
||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||
* @skb: buffer to alter
|
||||
@@ -2180,16 +2184,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
@@ -2181,16 +2185,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
}
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -2623,10 +2623,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
@@ -2626,10 +2626,20 @@ static int xmit_one(struct sk_buff *skb,
|
||||
if (!list_empty(&ptype_all))
|
||||
dev_queue_xmit_nit(skb, dev);
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
#include <net/protocol.h>
|
||||
#include <net/dst.h>
|
||||
@@ -469,6 +470,22 @@ struct sk_buff *__netdev_alloc_skb(struc
|
||||
@@ -471,6 +472,22 @@ struct sk_buff *__netdev_alloc_skb(struc
|
||||
}
|
||||
EXPORT_SYMBOL(__netdev_alloc_skb);
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
#endif /* HOSTAP_H */
|
||||
--- a/drivers/net/wireless/hostap/hostap_hw.c
|
||||
+++ b/drivers/net/wireless/hostap/hostap_hw.c
|
||||
@@ -928,6 +928,7 @@ static int hfa384x_set_rid(struct net_de
|
||||
@@ -933,6 +933,7 @@ static int hfa384x_set_rid(struct net_de
|
||||
prism2_hw_reset(dev);
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
/**************************************************
|
||||
* BCMA bus ops
|
||||
**************************************************/
|
||||
@@ -1688,6 +1700,14 @@ static int bgmac_probe(struct bcma_devic
|
||||
@@ -1693,6 +1705,14 @@ static int bgmac_probe(struct bcma_devic
|
||||
net_dev->hw_features = net_dev->features;
|
||||
net_dev->vlan_features = net_dev->features;
|
||||
|
||||
@@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
err = register_netdev(bgmac->net_dev);
|
||||
if (err) {
|
||||
bgmac_err(bgmac, "Cannot register net device\n");
|
||||
@@ -1714,6 +1734,10 @@ static void bgmac_remove(struct bcma_dev
|
||||
@@ -1719,6 +1739,10 @@ static void bgmac_remove(struct bcma_dev
|
||||
{
|
||||
struct bgmac *bgmac = bcma_get_drvdata(core);
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
--- a/drivers/usb/host/pci-quirks.c
|
||||
+++ b/drivers/usb/host/pci-quirks.c
|
||||
@@ -97,6 +97,8 @@ struct amd_chipset_type {
|
||||
@@ -98,6 +98,8 @@ struct amd_chipset_type {
|
||||
u8 rev;
|
||||
};
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
static struct amd_chipset_info {
|
||||
struct pci_dev *nb_dev;
|
||||
struct pci_dev *smbus_dev;
|
||||
@@ -454,6 +456,10 @@ void usb_amd_dev_put(void)
|
||||
@@ -462,6 +464,10 @@ void usb_amd_dev_put(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(usb_amd_dev_put);
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
/*
|
||||
* Make sure the controller is completely inactive, unable to
|
||||
* generate interrupts or do DMA.
|
||||
@@ -533,8 +539,17 @@ reset_needed:
|
||||
@@ -541,8 +547,17 @@ reset_needed:
|
||||
uhci_reset_hc(pdev, base);
|
||||
return 1;
|
||||
}
|
||||
@@ -39,7 +39,7 @@
|
||||
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
|
||||
{
|
||||
u16 cmd;
|
||||
@@ -1095,3 +1110,4 @@ static void quirk_usb_early_handoff(stru
|
||||
@@ -1103,3 +1118,4 @@ static void quirk_usb_early_handoff(stru
|
||||
}
|
||||
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
|
||||
|
||||
@@ -173,7 +173,7 @@
|
||||
goto err;
|
||||
--- a/net/core/sock.c
|
||||
+++ b/net/core/sock.c
|
||||
@@ -2933,6 +2933,8 @@ static __net_initdata struct pernet_oper
|
||||
@@ -2939,6 +2939,8 @@ static __net_initdata struct pernet_oper
|
||||
|
||||
static int __init proto_init(void)
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
+
|
||||
--- a/crypto/Makefile
|
||||
+++ b/crypto/Makefile
|
||||
@@ -101,6 +101,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg.
|
||||
@@ -103,6 +103,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg.
|
||||
obj-$(CONFIG_CRYPTO_USER_API_HASH) += algif_hash.o
|
||||
obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/of/fdt.c
|
||||
+++ b/drivers/of/fdt.c
|
||||
@@ -903,6 +903,9 @@ int __init early_init_dt_scan_chosen(uns
|
||||
@@ -909,6 +909,9 @@ int __init early_init_dt_scan_chosen(uns
|
||||
p = of_get_flat_dt_prop(node, "bootargs", &l);
|
||||
if (p != NULL && l > 0)
|
||||
strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
|
||||
|
||||
@@ -71,7 +71,7 @@ Date: Thu Feb 27 00:59:53 2014 -0800
|
||||
return ret;
|
||||
--- a/include/linux/pci_ids.h
|
||||
+++ b/include/linux/pci_ids.h
|
||||
@@ -827,6 +827,7 @@
|
||||
@@ -828,6 +828,7 @@
|
||||
#define PCI_DEVICE_ID_TI_XX12 0x8039
|
||||
#define PCI_DEVICE_ID_TI_XX12_FM 0x803b
|
||||
#define PCI_DEVICE_ID_TI_XIO2000A 0x8231
|
||||
|
||||
@@ -10,7 +10,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
|
||||
--- a/drivers/net/ethernet/intel/igb/e1000_phy.c
|
||||
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.c
|
||||
@@ -135,7 +135,7 @@ out:
|
||||
@@ -139,7 +139,7 @@ out:
|
||||
s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
|
||||
{
|
||||
struct e1000_phy_info *phy = &hw->phy;
|
||||
@@ -19,7 +19,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
s32 ret_val = 0;
|
||||
|
||||
if (offset > MAX_PHY_REG_ADDRESS) {
|
||||
@@ -148,11 +148,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
@@ -152,11 +152,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
* Control register. The MAC will take care of interfacing with the
|
||||
* PHY to retrieve the desired data.
|
||||
*/
|
||||
@@ -48,7 +48,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
|
||||
/* Poll the ready bit to see if the MDI read completed
|
||||
* Increasing the time out as testing showed failures with
|
||||
@@ -177,6 +191,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
@@ -181,6 +195,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
*data = (u16) mdic;
|
||||
|
||||
out:
|
||||
@@ -67,7 +67,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
return ret_val;
|
||||
}
|
||||
|
||||
@@ -191,7 +217,7 @@ out:
|
||||
@@ -195,7 +221,7 @@ out:
|
||||
s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
|
||||
{
|
||||
struct e1000_phy_info *phy = &hw->phy;
|
||||
@@ -76,7 +76,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
s32 ret_val = 0;
|
||||
|
||||
if (offset > MAX_PHY_REG_ADDRESS) {
|
||||
@@ -204,12 +230,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
@@ -208,12 +234,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
* Control register. The MAC will take care of interfacing with the
|
||||
* PHY to retrieve the desired data.
|
||||
*/
|
||||
@@ -108,7 +108,7 @@ Date: Thu May 15 00:12:26 2014 -0700
|
||||
|
||||
/* Poll the ready bit to see if the MDI read completed
|
||||
* Increasing the time out as testing showed failures with
|
||||
@@ -233,6 +274,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
@@ -237,6 +278,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
}
|
||||
|
||||
out:
|
||||
|
||||
@@ -36,7 +36,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
|
||||
--- a/drivers/net/ethernet/intel/igb/e1000_phy.c
|
||||
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.c
|
||||
@@ -132,9 +132,8 @@ out:
|
||||
@@ -136,9 +136,8 @@ out:
|
||||
* Reads the MDI control regsiter in the PHY at offset and stores the
|
||||
* information read to data.
|
||||
**/
|
||||
@@ -47,7 +47,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
u32 i, mdicnfg, mdic = 0;
|
||||
s32 ret_val = 0;
|
||||
|
||||
@@ -153,14 +152,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
@@ -157,14 +156,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
|
||||
case e1000_i211:
|
||||
mdicnfg = rd32(E1000_MDICNFG);
|
||||
mdicnfg &= ~(E1000_MDICNFG_PHY_MASK);
|
||||
@@ -64,7 +64,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
(E1000_MDIC_OP_READ));
|
||||
break;
|
||||
}
|
||||
@@ -214,9 +213,8 @@ out:
|
||||
@@ -218,9 +217,8 @@ out:
|
||||
*
|
||||
* Writes data to MDI control register in the PHY at offset.
|
||||
**/
|
||||
@@ -75,7 +75,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
u32 i, mdicnfg, mdic = 0;
|
||||
s32 ret_val = 0;
|
||||
|
||||
@@ -235,7 +233,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
@@ -239,7 +237,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
case e1000_i211:
|
||||
mdicnfg = rd32(E1000_MDICNFG);
|
||||
mdicnfg &= ~(E1000_MDICNFG_PHY_MASK);
|
||||
@@ -84,7 +84,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
wr32(E1000_MDICNFG, mdicnfg);
|
||||
mdic = (((u32)data) |
|
||||
(offset << E1000_MDIC_REG_SHIFT) |
|
||||
@@ -244,7 +242,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
@@ -248,7 +246,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
|
||||
default:
|
||||
mdic = (((u32)data) |
|
||||
(offset << E1000_MDIC_REG_SHIFT) |
|
||||
@@ -93,7 +93,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
(E1000_MDIC_OP_WRITE));
|
||||
break;
|
||||
}
|
||||
@@ -464,7 +462,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
|
||||
@@ -468,7 +466,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
|
||||
goto out;
|
||||
|
||||
if (offset > MAX_PHY_MULTI_PAGE_REG) {
|
||||
@@ -102,7 +102,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
IGP01E1000_PHY_PAGE_SELECT,
|
||||
(u16)offset);
|
||||
if (ret_val) {
|
||||
@@ -473,8 +471,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
|
||||
@@ -477,8 +475,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
|
||||
hw->phy.ops.release(hw);
|
||||
|
||||
@@ -503,7 +501,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h
|
||||
@@ -507,7 +505,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h
|
||||
goto out;
|
||||
|
||||
if (offset > MAX_PHY_MULTI_PAGE_REG) {
|
||||
@@ -122,7 +122,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
IGP01E1000_PHY_PAGE_SELECT,
|
||||
(u16)offset);
|
||||
if (ret_val) {
|
||||
@@ -512,8 +510,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h
|
||||
@@ -516,8 +514,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
|
||||
hw->phy.ops.release(hw);
|
||||
|
||||
@@ -2464,8 +2462,9 @@ out:
|
||||
@@ -2468,8 +2466,9 @@ out:
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,7 +144,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
* @offset: lower half is register offset to write to
|
||||
* upper half is page to use.
|
||||
* @data: data to write at register offset
|
||||
@@ -2473,7 +2472,7 @@ out:
|
||||
@@ -2477,7 +2476,7 @@ out:
|
||||
* Acquires semaphore, if necessary, then writes the data to PHY register
|
||||
* at the offset. Release any acquired semaphores before exiting.
|
||||
**/
|
||||
@@ -153,7 +153,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
{
|
||||
s32 ret_val;
|
||||
u16 page = offset >> GS40G_PAGE_SHIFT;
|
||||
@@ -2483,10 +2482,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000
|
||||
@@ -2487,10 +2486,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
|
||||
@@ -166,7 +166,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
|
||||
release:
|
||||
hw->phy.ops.release(hw);
|
||||
@@ -2494,8 +2493,24 @@ release:
|
||||
@@ -2498,8 +2497,24 @@ release:
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -192,7 +192,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
* @offset: lower half is register offset to read to
|
||||
* upper half is page to use.
|
||||
* @data: data to read at register offset
|
||||
@@ -2503,7 +2518,7 @@ release:
|
||||
@@ -2507,7 +2522,7 @@ release:
|
||||
* Acquires semaphore, if necessary, then reads the data in the PHY register
|
||||
* at the offset. Release any acquired semaphores before exiting.
|
||||
**/
|
||||
@@ -201,7 +201,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
{
|
||||
s32 ret_val;
|
||||
u16 page = offset >> GS40G_PAGE_SHIFT;
|
||||
@@ -2513,10 +2528,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_
|
||||
@@ -2517,10 +2532,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_
|
||||
if (ret_val)
|
||||
return ret_val;
|
||||
|
||||
@@ -214,7 +214,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
|
||||
|
||||
release:
|
||||
hw->phy.ops.release(hw);
|
||||
@@ -2524,6 +2539,21 @@ release:
|
||||
@@ -2528,6 +2543,21 @@ release:
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -210,6 +210,9 @@ struct sk_buff *__alloc_skb(unsigned int
|
||||
@@ -212,6 +212,9 @@ struct sk_buff *__alloc_skb(unsigned int
|
||||
|
||||
if (sk_memalloc_socks() && (flags & SKB_ALLOC_RX))
|
||||
gfp_mask |= __GFP_MEMALLOC;
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
/* Get the HEAD */
|
||||
skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
|
||||
@@ -1096,6 +1099,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
@@ -1098,6 +1101,10 @@ int pskb_expand_head(struct sk_buff *skb
|
||||
if (skb_shared(skb))
|
||||
BUG();
|
||||
|
||||
|
||||
@@ -5525,7 +5525,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
unsigned long type);
|
||||
--- a/include/linux/pci_ids.h
|
||||
+++ b/include/linux/pci_ids.h
|
||||
@@ -1050,6 +1050,12 @@
|
||||
@@ -1051,6 +1051,12 @@
|
||||
#define PCI_DEVICE_ID_SGI_LITHIUM 0x1002
|
||||
#define PCI_DEVICE_ID_SGI_IOC4 0x100a
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -838,7 +838,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -841,7 +841,8 @@ void phy_state_machine(struct work_struc
|
||||
/* If the link is down, give up on negotiation for now */
|
||||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
@@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
break;
|
||||
}
|
||||
@@ -911,7 +912,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -914,7 +915,8 @@ void phy_state_machine(struct work_struc
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
@@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
@@ -923,7 +925,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -926,7 +928,8 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
||||
@@ -20,7 +20,7 @@ Subject: [PATCH 32/36] USB: fix roothub for IFXHCD
|
||||
choice
|
||||
--- a/drivers/usb/core/hub.c
|
||||
+++ b/drivers/usb/core/hub.c
|
||||
@@ -4321,7 +4321,7 @@ hub_port_init (struct usb_hub *hub, stru
|
||||
@@ -4320,7 +4320,7 @@ hub_port_init (struct usb_hub *hub, stru
|
||||
udev->ttport = hdev->ttport;
|
||||
} else if (udev->speed != USB_SPEED_HIGH
|
||||
&& hdev->speed == USB_SPEED_HIGH) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
--- a/drivers/gpio/Kconfig
|
||||
+++ b/drivers/gpio/Kconfig
|
||||
@@ -819,6 +819,12 @@ config GPIO_MC33880
|
||||
@@ -820,6 +820,12 @@ config GPIO_MC33880
|
||||
SPI driver for Freescale MC33880 high-side/low-side switch.
|
||||
This provides GPIO interface supporting inputs and outputs.
|
||||
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
put_usb3_hcd:
|
||||
usb_put_hcd(xhci->shared_hcd);
|
||||
|
||||
@@ -190,6 +206,7 @@ static int xhci_plat_remove(struct platf
|
||||
struct clk *clk = xhci->clk;
|
||||
@@ -192,6 +208,7 @@ static int xhci_plat_remove(struct platf
|
||||
xhci->xhc_state |= XHCI_STATE_REMOVING;
|
||||
|
||||
usb_remove_hcd(xhci->shared_hcd);
|
||||
+ usb_phy_shutdown(hcd->usb_phy);
|
||||
|
||||
@@ -88,7 +88,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
#include <video/da8xx-fb.h>
|
||||
#include <asm/div64.h>
|
||||
|
||||
@@ -1317,12 +1318,54 @@ static struct fb_ops da8xx_fb_ops = {
|
||||
@@ -1316,12 +1317,54 @@ static struct fb_ops da8xx_fb_ops = {
|
||||
.fb_blank = cfb_blank,
|
||||
};
|
||||
|
||||
@@ -143,7 +143,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
for (i = 0, lcdc_info = known_lcd_panels;
|
||||
i < ARRAY_SIZE(known_lcd_panels); i++, lcdc_info++) {
|
||||
if (strcmp(fb_pdata->type, lcdc_info->name) == 0)
|
||||
@@ -1351,7 +1394,7 @@ static int fb_probe(struct platform_devi
|
||||
@@ -1350,7 +1393,7 @@ static int fb_probe(struct platform_devi
|
||||
int ret;
|
||||
unsigned long ulcm;
|
||||
|
||||
@@ -152,7 +152,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
dev_err(&device->dev, "Can not get platform data\n");
|
||||
return -ENOENT;
|
||||
}
|
||||
@@ -1391,7 +1434,10 @@ static int fb_probe(struct platform_devi
|
||||
@@ -1390,7 +1433,10 @@ static int fb_probe(struct platform_devi
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
|
||||
if (!lcd_cfg) {
|
||||
ret = -EINVAL;
|
||||
@@ -1410,7 +1456,7 @@ static int fb_probe(struct platform_devi
|
||||
@@ -1409,7 +1455,7 @@ static int fb_probe(struct platform_devi
|
||||
par->dev = &device->dev;
|
||||
par->lcdc_clk = tmp_lcdc_clk;
|
||||
par->lcdc_clk_rate = clk_get_rate(par->lcdc_clk);
|
||||
@@ -173,7 +173,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
par->panel_power_ctrl = fb_pdata->panel_power_ctrl;
|
||||
par->panel_power_ctrl(1);
|
||||
}
|
||||
@@ -1654,12 +1700,26 @@ static int fb_resume(struct device *dev)
|
||||
@@ -1653,12 +1699,26 @@ static int fb_resume(struct device *dev)
|
||||
|
||||
static SIMPLE_DEV_PM_OPS(fb_pm_ops, fb_suspend, fb_resume);
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Signed-off-by: Prathap M S <msprathap@ti.com>
|
||||
static struct fb_videomode known_lcd_panels[] = {
|
||||
/* Sharp LCD035Q3DG01 */
|
||||
[0] = {
|
||||
@@ -831,6 +834,32 @@ static int lcd_init(struct da8xx_fb_par
|
||||
@@ -830,6 +833,32 @@ static int lcd_init(struct da8xx_fb_par
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ Signed-off-by: Prathap M S <msprathap@ti.com>
|
||||
/* IRQ handler for version 2 of LCDC */
|
||||
static irqreturn_t lcdc_irq_handler_rev02(int irq, void *arg)
|
||||
{
|
||||
@@ -868,6 +897,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
@@ -867,6 +896,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
LCD_DMA_FRM_BUF_CEILING_ADDR_0_REG);
|
||||
par->vsync_flag = 1;
|
||||
wake_up_interruptible(&par->vsync_wait);
|
||||
@@ -68,7 +68,7 @@ Signed-off-by: Prathap M S <msprathap@ti.com>
|
||||
}
|
||||
|
||||
if (stat & LCD_END_OF_FRAME1) {
|
||||
@@ -943,6 +974,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
@@ -942,6 +973,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
|
||||
par->vsync_flag = 1;
|
||||
wake_up_interruptible(&par->vsync_wait);
|
||||
|
||||
@@ -18,7 +18,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
|
||||
--- a/drivers/video/fbdev/da8xx-fb.c
|
||||
+++ b/drivers/video/fbdev/da8xx-fb.c
|
||||
@@ -909,6 +909,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
@@ -908,6 +908,8 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
|
||||
par->vsync_flag = 1;
|
||||
wake_up_interruptible(&par->vsync_wait);
|
||||
@@ -27,7 +27,7 @@ Signed-off-by: Darren Etheridge <detheridge@ti.com>
|
||||
}
|
||||
|
||||
/* Set only when controller is disabled and at the end of
|
||||
@@ -974,8 +976,6 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
@@ -973,8 +975,6 @@ static irqreturn_t lcdc_irq_handler_rev0
|
||||
LCD_DMA_FRM_BUF_CEILING_ADDR_1_REG);
|
||||
par->vsync_flag = 1;
|
||||
wake_up_interruptible(&par->vsync_wait);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user