Merge pull request #536 from wigyori/cc-sec

Security upgrade for CC
This commit is contained in:
Zoltan Herpai
2017-10-04 23:53:57 +02:00
committed by GitHub
105 changed files with 1513 additions and 1457 deletions

View File

@@ -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)))

View File

@@ -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

View File

@@ -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() {

View 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 */

View File

@@ -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 := \

View File

@@ -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

View File

@@ -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;

View File

@@ -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));

View File

@@ -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)

View File

@@ -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>

View File

@@ -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

View File

@@ -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

View File

@@ -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
}

View File

@@ -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;
}

View File

@@ -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) {

View File

@@ -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.*/

View File

@@ -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:

View File

@@ -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

View File

@@ -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 */

View File

@@ -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

View File

@@ -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 */

View File

@@ -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')

View File

@@ -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) {

View File

@@ -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

View File

@@ -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;

View File

@@ -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)));

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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
}

View File

@@ -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)

View File

@@ -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 */

View File

@@ -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.

View File

@@ -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 */

View File

@@ -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 */

View File

@@ -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

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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;

View File

@@ -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"

View File

@@ -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;

View File

@@ -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)
{

View File

@@ -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);

View File

@@ -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);

View File

@@ -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

View File

@@ -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

View File

@@ -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 @@

View File

@@ -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

View File

@@ -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 */

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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.

View File

@@ -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);

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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];

View File

@@ -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)

View File

@@ -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

View File

@@ -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);

View File

@@ -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 ||

View File

@@ -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

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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 },

View File

@@ -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)
{

View File

@@ -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)
}

View File

@@ -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;

View File

@@ -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);

View File

@@ -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",

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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);

View File

@@ -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)
{

View File

@@ -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

View File

@@ -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));

View File

@@ -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

View File

@@ -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:

View File

@@ -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:
}
/**

View File

@@ -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();

View File

@@ -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

View File

@@ -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;

View File

@@ -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) {

View File

@@ -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.

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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