mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 19:25:21 +02:00
[kernel] make all 3.6 patches apply and build
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33911 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
8b3c85ca82
commit
eb0c020062
3201
target/linux/generic/config-3.6
Normal file
3201
target/linux/generic/config-3.6
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/usb/hso.c
|
||||
+++ b/drivers/net/usb/hso.c
|
||||
@@ -476,8 +476,10 @@ static const struct usb_device_id hso_id
|
||||
@@ -468,8 +468,10 @@ static const struct usb_device_id hso_id
|
||||
{USB_DEVICE(0x0af0, 0x8400)},
|
||||
{USB_DEVICE(0x0af0, 0x8600)},
|
||||
{USB_DEVICE(0x0af0, 0x8800)},
|
||||
|
@ -44,11 +44,9 @@ To unsubscribe from this list: send the line "unsubscribe netdev" in
|
||||
the body of a message to majordomo@vger.kernel.org
|
||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
||||
|
||||
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
|
||||
index 2fd2bc9..fa2c2c2 100644
|
||||
--- a/net/ipv4/tcp_input.c
|
||||
+++ b/net/ipv4/tcp_input.c
|
||||
@@ -237,7 +237,11 @@ static inline void TCP_ECN_check_ce(struct tcp_sock *tp, const struct sk_buff *s
|
||||
@@ -237,7 +237,11 @@ static inline void TCP_ECN_check_ce(stru
|
||||
tcp_enter_quickack_mode((struct sock *)tp);
|
||||
break;
|
||||
case INET_ECN_CE:
|
||||
|
@ -1,7 +1,6 @@
|
||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Documentation/filesystems/Locking
|
||||
--- vfs-4cbe5a5/Documentation/filesystems/Locking 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/Documentation/filesystems/Locking 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -64,6 +64,7 @@
|
||||
--- a/Documentation/filesystems/Locking
|
||||
+++ b/Documentation/filesystems/Locking
|
||||
@@ -64,6 +64,7 @@ prototypes:
|
||||
int (*atomic_open)(struct inode *, struct dentry *,
|
||||
struct file *, unsigned open_flag,
|
||||
umode_t create_mode, int *opened);
|
||||
@ -9,7 +8,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
|
||||
|
||||
locking rules:
|
||||
all may block
|
||||
@@ -92,6 +93,7 @@
|
||||
@@ -92,6 +93,7 @@ removexattr: yes
|
||||
fiemap: no
|
||||
update_time: no
|
||||
atomic_open: yes
|
||||
@ -17,9 +16,8 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
|
||||
|
||||
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
|
||||
victim.
|
||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a648/Documentation/filesystems/overlayfs.txt
|
||||
--- vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/Documentation/filesystems/overlayfs.txt 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/Documentation/filesystems/overlayfs.txt
|
||||
@@ -0,0 +1,199 @@
|
||||
+Written by: Neil Brown <neilb@suse.de>
|
||||
+
|
||||
@ -220,10 +218,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a64
|
||||
+filesystem are not allowed. If the underlying filesystem is changed,
|
||||
+the behavior of the overlay is undefined, though it will not result in
|
||||
+a crash or deadlock.
|
||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Documentation/filesystems/vfs.txt
|
||||
--- vfs-4cbe5a5/Documentation/filesystems/vfs.txt 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/Documentation/filesystems/vfs.txt 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -363,6 +363,7 @@
|
||||
--- a/Documentation/filesystems/vfs.txt
|
||||
+++ b/Documentation/filesystems/vfs.txt
|
||||
@@ -363,6 +363,7 @@ struct inode_operations {
|
||||
int (*atomic_open)(struct inode *, struct dentry *,
|
||||
struct file *, unsigned open_flag,
|
||||
umode_t create_mode, int *opened);
|
||||
@ -231,7 +228,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
|
||||
};
|
||||
|
||||
Again, all methods are called without any locks being held, unless
|
||||
@@ -692,6 +693,12 @@
|
||||
@@ -692,6 +693,12 @@ struct address_space_operations {
|
||||
but instead uses bmap to find out where the blocks in the file
|
||||
are and uses those addresses directly.
|
||||
|
||||
@ -244,10 +241,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
|
||||
|
||||
invalidatepage: If a page has PagePrivate set, then invalidatepage
|
||||
will be called when part or all of the page is to be removed
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
|
||||
--- vfs-4cbe5a5/fs/ecryptfs/main.c 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/ecryptfs/main.c 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -565,6 +565,13 @@
|
||||
--- a/fs/ecryptfs/main.c
|
||||
+++ b/fs/ecryptfs/main.c
|
||||
@@ -566,6 +566,13 @@ static struct dentry *ecryptfs_mount(str
|
||||
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
|
||||
s->s_blocksize = path.dentry->d_sb->s_blocksize;
|
||||
s->s_magic = ECRYPTFS_SUPER_MAGIC;
|
||||
@ -261,10 +257,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
|
||||
|
||||
inode = ecryptfs_get_inode(path.dentry->d_inode, s);
|
||||
rc = PTR_ERR(inode);
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
|
||||
--- vfs-4cbe5a5/fs/internal.h 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/internal.h 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -42,11 +42,6 @@
|
||||
--- a/fs/internal.h
|
||||
+++ b/fs/internal.h
|
||||
@@ -42,11 +42,6 @@ static inline int __sync_blockdev(struct
|
||||
extern void __init chrdev_init(void);
|
||||
|
||||
/*
|
||||
@ -276,10 +271,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
|
||||
* namespace.c
|
||||
*/
|
||||
extern int copy_mount_options(const void __user *, unsigned long *);
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
|
||||
--- vfs-4cbe5a5/fs/Kconfig 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/Kconfig 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -67,6 +67,7 @@
|
||||
--- a/fs/Kconfig
|
||||
+++ b/fs/Kconfig
|
||||
@@ -67,6 +67,7 @@ source "fs/quota/Kconfig"
|
||||
|
||||
source "fs/autofs4/Kconfig"
|
||||
source "fs/fuse/Kconfig"
|
||||
@ -287,10 +281,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
|
||||
|
||||
config CUSE
|
||||
tristate "Character device in Userspace support"
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
|
||||
--- vfs-4cbe5a5/fs/Makefile 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/Makefile 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -106,6 +106,7 @@
|
||||
--- a/fs/Makefile
|
||||
+++ b/fs/Makefile
|
||||
@@ -106,6 +106,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
|
||||
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
|
||||
obj-$(CONFIG_ADFS_FS) += adfs/
|
||||
obj-$(CONFIG_FUSE_FS) += fuse/
|
||||
@ -298,10 +291,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
|
||||
obj-$(CONFIG_UDF_FS) += udf/
|
||||
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
|
||||
obj-$(CONFIG_OMFS_FS) += omfs/
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
|
||||
--- vfs-4cbe5a5/fs/namei.c 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/namei.c 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -348,6 +348,7 @@
|
||||
--- a/fs/namei.c
|
||||
+++ b/fs/namei.c
|
||||
@@ -348,6 +348,7 @@ int __inode_permission(struct inode *ino
|
||||
|
||||
return security_inode_permission(inode, mask);
|
||||
}
|
||||
@ -309,7 +301,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
|
||||
|
||||
/**
|
||||
* sb_permission - Check superblock-level permissions
|
||||
@@ -2822,9 +2823,12 @@
|
||||
@@ -2822,9 +2823,12 @@ finish_open_created:
|
||||
error = may_open(&nd->path, acc_mode, open_flag);
|
||||
if (error)
|
||||
goto out;
|
||||
@ -325,10 +317,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
|
||||
if (error == -EOPENSTALE)
|
||||
goto stale_open;
|
||||
goto out;
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
|
||||
--- vfs-4cbe5a5/fs/namespace.c 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/namespace.c 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -1387,6 +1387,24 @@
|
||||
--- a/fs/namespace.c
|
||||
+++ b/fs/namespace.c
|
||||
@@ -1387,6 +1387,24 @@ void drop_collected_mounts(struct vfsmou
|
||||
release_mounts(&umount_list);
|
||||
}
|
||||
|
||||
@ -353,10 +344,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
|
||||
int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||
struct vfsmount *root)
|
||||
{
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
|
||||
--- vfs-4cbe5a5/fs/open.c 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/open.c 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -787,8 +787,7 @@
|
||||
--- a/fs/open.c
|
||||
+++ b/fs/open.c
|
||||
@@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
|
||||
return ERR_PTR(error);
|
||||
|
||||
f->f_flags = flags;
|
||||
@ -366,7 +356,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
|
||||
if (!error) {
|
||||
error = open_check_o_direct(f);
|
||||
if (error) {
|
||||
@@ -803,6 +802,26 @@
|
||||
@@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
|
||||
}
|
||||
EXPORT_SYMBOL(dentry_open);
|
||||
|
||||
@ -393,9 +383,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
|
||||
static void __put_unused_fd(struct files_struct *files, unsigned int fd)
|
||||
{
|
||||
struct fdtable *fdt = files_fdtable(files);
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/copy_up.c
|
||||
--- vfs-4cbe5a5/fs/overlayfs/copy_up.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/copy_up.c 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/copy_up.c
|
||||
@@ -0,0 +1,385 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -782,9 +771,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/co
|
||||
+ dput(parent);
|
||||
+ return err;
|
||||
+}
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
|
||||
--- vfs-4cbe5a5/fs/overlayfs/dir.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/dir.c 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/dir.c
|
||||
@@ -0,0 +1,604 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -1390,9 +1378,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
|
||||
+ .listxattr = ovl_listxattr,
|
||||
+ .removexattr = ovl_removexattr,
|
||||
+};
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inode.c
|
||||
--- vfs-4cbe5a5/fs/overlayfs/inode.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/inode.c 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/inode.c
|
||||
@@ -0,0 +1,372 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -1766,17 +1753,15 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inod
|
||||
+ return inode;
|
||||
+
|
||||
+}
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Kconfig vfs-3d5a648/fs/overlayfs/Kconfig
|
||||
--- vfs-4cbe5a5/fs/overlayfs/Kconfig 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/Kconfig 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/Kconfig
|
||||
@@ -0,0 +1,4 @@
|
||||
+config OVERLAYFS_FS
|
||||
+ tristate "Overlay filesystem support"
|
||||
+ help
|
||||
+ Add support for overlay filesystem.
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Makefile
|
||||
--- vfs-4cbe5a5/fs/overlayfs/Makefile 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/Makefile 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/Makefile
|
||||
@@ -0,0 +1,7 @@
|
||||
+#
|
||||
+# Makefile for the overlay filesystem.
|
||||
@ -1785,9 +1770,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Mak
|
||||
+obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
|
||||
+
|
||||
+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/overlayfs.h
|
||||
--- vfs-4cbe5a5/fs/overlayfs/overlayfs.h 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/overlayfs.h 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/overlayfs.h
|
||||
@@ -0,0 +1,70 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -1859,9 +1843,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/
|
||||
+/* copy_up.c */
|
||||
+int ovl_copy_up(struct dentry *dentry);
|
||||
+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/readdir.c
|
||||
--- vfs-4cbe5a5/fs/overlayfs/readdir.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/readdir.c 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/readdir.c
|
||||
@@ -0,0 +1,566 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -2429,9 +2412,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/re
|
||||
+
|
||||
+ return err;
|
||||
+}
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/super.c
|
||||
--- vfs-4cbe5a5/fs/overlayfs/super.c 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ vfs-3d5a648/fs/overlayfs/super.c 2012-09-05 16:35:20.000000000 +0200
|
||||
--- /dev/null
|
||||
+++ b/fs/overlayfs/super.c
|
||||
@@ -0,0 +1,685 @@
|
||||
+/*
|
||||
+ *
|
||||
@ -3118,10 +3100,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/supe
|
||||
+
|
||||
+module_init(ovl_init);
|
||||
+module_exit(ovl_exit);
|
||||
diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
|
||||
--- vfs-4cbe5a5/fs/splice.c 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/fs/splice.c 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -1308,6 +1308,7 @@
|
||||
--- a/fs/splice.c
|
||||
+++ b/fs/splice.c
|
||||
@@ -1308,6 +1308,7 @@ long do_splice_direct(struct file *in, l
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -3129,10 +3110,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
|
||||
|
||||
static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
|
||||
struct pipe_inode_info *opipe,
|
||||
diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
--- vfs-4cbe5a5/include/linux/fs.h 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/include/linux/fs.h 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -505,6 +505,12 @@
|
||||
--- a/include/linux/fs.h
|
||||
+++ b/include/linux/fs.h
|
||||
@@ -505,6 +505,12 @@ struct iattr {
|
||||
*/
|
||||
#include <linux/quota.h>
|
||||
|
||||
@ -3145,7 +3125,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
/**
|
||||
* enum positive_aop_returns - aop return codes with specific semantics
|
||||
*
|
||||
@@ -1578,6 +1584,11 @@
|
||||
@@ -1578,6 +1584,11 @@ struct super_block {
|
||||
|
||||
/* Being remounted read-only */
|
||||
int s_readonly_remount;
|
||||
@ -3157,7 +3137,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
};
|
||||
|
||||
/* superblock cache pruning functions */
|
||||
@@ -1835,6 +1846,7 @@
|
||||
@@ -1835,6 +1846,7 @@ struct inode_operations {
|
||||
int (*atomic_open)(struct inode *, struct dentry *,
|
||||
struct file *, unsigned open_flag,
|
||||
umode_t create_mode, int *opened);
|
||||
@ -3165,7 +3145,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
} ____cacheline_aligned;
|
||||
|
||||
struct seq_file;
|
||||
@@ -2199,6 +2211,7 @@
|
||||
@@ -2199,6 +2211,7 @@ extern long do_sys_open(int dfd, const c
|
||||
extern struct file *filp_open(const char *, int, umode_t);
|
||||
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
|
||||
const char *, int);
|
||||
@ -3173,7 +3153,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
extern struct file * dentry_open(const struct path *, int, const struct cred *);
|
||||
extern int filp_close(struct file *, fl_owner_t id);
|
||||
extern char * getname(const char __user *);
|
||||
@@ -2402,6 +2415,7 @@
|
||||
@@ -2402,6 +2415,7 @@ extern sector_t bmap(struct inode *, sec
|
||||
#endif
|
||||
extern int notify_change(struct dentry *, struct iattr *);
|
||||
extern int inode_permission(struct inode *, int);
|
||||
@ -3181,10 +3161,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
||||
extern int generic_permission(struct inode *, int);
|
||||
|
||||
static inline bool execute_ok(struct inode *inode)
|
||||
diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mount.h
|
||||
--- vfs-4cbe5a5/include/linux/mount.h 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/include/linux/mount.h 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -66,6 +66,9 @@
|
||||
--- a/include/linux/mount.h
|
||||
+++ b/include/linux/mount.h
|
||||
@@ -66,6 +66,9 @@ extern void mnt_pin(struct vfsmount *mnt
|
||||
extern void mnt_unpin(struct vfsmount *mnt);
|
||||
extern int __mnt_is_readonly(struct vfsmount *mnt);
|
||||
|
||||
@ -3194,10 +3173,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mo
|
||||
struct file_system_type;
|
||||
extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
|
||||
int flags, const char *name,
|
||||
diff -Nur -x .git vfs-4cbe5a5/MAINTAINERS vfs-3d5a648/MAINTAINERS
|
||||
--- vfs-4cbe5a5/MAINTAINERS 2012-09-01 19:39:58.000000000 +0200
|
||||
+++ vfs-3d5a648/MAINTAINERS 2012-09-05 16:35:20.000000000 +0200
|
||||
@@ -5103,6 +5103,13 @@
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -5105,6 +5105,13 @@ F: drivers/scsi/osd/
|
||||
F: include/scsi/osd_*
|
||||
F: fs/exofs/
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/usb/host/ehci-hcd.c
|
||||
+++ b/drivers/usb/host/ehci-hcd.c
|
||||
@@ -795,7 +795,7 @@ static int ehci_run (struct usb_hcd *hcd
|
||||
@@ -645,7 +645,7 @@ static int ehci_run (struct usb_hcd *hcd
|
||||
"USB %x.%x started, EHCI %x.%02x%s\n",
|
||||
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
||||
temp >> 8, temp & 0xff,
|
||||
@ -11,7 +11,7 @@
|
||||
&ehci->regs->intr_enable); /* Turn On Interrupts */
|
||||
--- a/drivers/usb/host/ehci-hub.c
|
||||
+++ b/drivers/usb/host/ehci-hub.c
|
||||
@@ -578,7 +578,7 @@ ehci_hub_status_data (struct usb_hcd *hc
|
||||
@@ -585,7 +585,7 @@ ehci_hub_status_data (struct usb_hcd *hc
|
||||
* always set, seem to clear PORT_OCC and PORT_CSC when writing to
|
||||
* PORT_POWER; that's surprising, but maybe within-spec.
|
||||
*/
|
||||
@ -20,7 +20,7 @@
|
||||
mask = PORT_CSC | PORT_PEC | PORT_OCC;
|
||||
else
|
||||
mask = PORT_CSC | PORT_PEC;
|
||||
@@ -803,7 +803,7 @@ static int ehci_hub_control (
|
||||
@@ -804,7 +804,7 @@ static int ehci_hub_control (
|
||||
if (temp & PORT_PEC)
|
||||
status |= USB_PORT_STAT_C_ENABLE << 16;
|
||||
|
||||
@ -31,7 +31,7 @@
|
||||
/*
|
||||
--- a/drivers/usb/host/ehci.h
|
||||
+++ b/drivers/usb/host/ehci.h
|
||||
@@ -147,6 +147,7 @@ struct ehci_hcd { /* one per controlle
|
||||
@@ -197,6 +197,7 @@ struct ehci_hcd { /* one per controlle
|
||||
unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
|
||||
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
|
||||
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/scripts/setlocalversion
|
||||
+++ b/scripts/setlocalversion
|
||||
@@ -168,7 +168,7 @@ else
|
||||
@@ -167,7 +167,7 @@ else
|
||||
# annotated or signed tagged state (as git describe only
|
||||
# looks at signed or annotated tags - git tag -a/-s) and
|
||||
# LOCALVERSION= is not specified
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -559,9 +559,9 @@ endif # $(dot-config)
|
||||
@@ -556,9 +556,9 @@ endif # $(dot-config)
|
||||
all: vmlinux
|
||||
|
||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||
@ -12,7 +12,7 @@
|
||||
endif
|
||||
|
||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
||||
@@ -620,6 +620,9 @@ endif
|
||||
@@ -627,6 +627,9 @@ endif
|
||||
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
|
||||
CHECKFLAGS += $(NOSTDINC_FLAGS)
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -374,7 +374,7 @@ KBUILD_CFLAGS_KERNEL :=
|
||||
@@ -369,7 +369,7 @@ KBUILD_CFLAGS_KERNEL :=
|
||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/stddef.h
|
||||
+++ b/include/linux/stddef.h
|
||||
@@ -16,6 +16,7 @@ enum {
|
||||
@@ -12,6 +12,7 @@ enum {
|
||||
false = 0,
|
||||
true = 1
|
||||
};
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
#undef offsetof
|
||||
#ifdef __compiler_offsetof
|
||||
@@ -23,6 +24,5 @@ enum {
|
||||
@@ -19,6 +20,5 @@ enum {
|
||||
#else
|
||||
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
||||
#endif
|
||||
|
@ -28,7 +28,7 @@
|
||||
#ifndef SYMBOL_PREFIX
|
||||
#define VMLINUX_SYMBOL(sym) sym
|
||||
#else
|
||||
@@ -275,14 +296,14 @@
|
||||
@@ -276,14 +297,14 @@
|
||||
/* Kernel symbol table: Normal symbols */ \
|
||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||
@ -45,7 +45,7 @@
|
||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||
} \
|
||||
\
|
||||
@@ -344,7 +365,7 @@
|
||||
@@ -345,7 +366,7 @@
|
||||
\
|
||||
/* Kernel symbol table: strings */ \
|
||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||
@ -54,7 +54,7 @@
|
||||
} \
|
||||
\
|
||||
/* __*init sections */ \
|
||||
@@ -676,6 +697,9 @@
|
||||
@@ -670,6 +691,9 @@
|
||||
EXIT_TEXT \
|
||||
EXIT_DATA \
|
||||
EXIT_CALL \
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -181,7 +181,6 @@ config NF_CONNTRACK_FTP
|
||||
@@ -191,7 +191,6 @@ config NF_CONNTRACK_FTP
|
||||
|
||||
config NF_CONNTRACK_H323
|
||||
tristate "H.323 protocol support"
|
||||
@ -8,7 +8,7 @@
|
||||
depends on NETFILTER_ADVANCED
|
||||
help
|
||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
||||
@@ -627,7 +626,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||
@@ -693,7 +692,6 @@ config NETFILTER_XT_TARGET_SECMARK
|
||||
|
||||
config NETFILTER_XT_TARGET_TCPMSS
|
||||
tristate '"TCPMSS" target support'
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/crypto/Kconfig
|
||||
+++ b/drivers/crypto/Kconfig
|
||||
@@ -172,6 +172,7 @@ config CRYPTO_DEV_MV_CESA
|
||||
@@ -164,6 +164,7 @@ config CRYPTO_DEV_MV_CESA
|
||||
depends on PLAT_ORION
|
||||
select CRYPTO_ALGAPI
|
||||
select CRYPTO_AES
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/lib/Kconfig
|
||||
+++ b/lib/Kconfig
|
||||
@@ -207,16 +207,16 @@ config BCH_CONST_T
|
||||
@@ -277,16 +277,16 @@ config BCH_CONST_T
|
||||
# Textsearch support is select'ed if needed
|
||||
#
|
||||
config TEXTSEARCH
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/wireless/Kconfig
|
||||
+++ b/net/wireless/Kconfig
|
||||
@@ -143,13 +143,13 @@ config LIB80211
|
||||
@@ -150,13 +150,13 @@ config LIB80211
|
||||
you want this built into your kernel.
|
||||
|
||||
config LIB80211_CRYPT_WEP
|
||||
|
@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
---
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -877,9 +877,6 @@ config ARC
|
||||
@@ -894,9 +894,6 @@ config ARC
|
||||
config ARCH_MAY_HAVE_PC_FDC
|
||||
bool
|
||||
|
||||
@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
||||
config CEVT_BCM1480
|
||||
bool
|
||||
|
||||
@@ -2330,6 +2327,18 @@ config USE_OF
|
||||
@@ -2367,6 +2364,18 @@ config USE_OF
|
||||
help
|
||||
Include support for flattened device tree machine descriptions.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -976,6 +976,10 @@ config SYNC_R4K
|
||||
@@ -993,6 +993,10 @@ config SYNC_R4K
|
||||
config MIPS_MACHINE
|
||||
def_bool n
|
||||
|
||||
|
@ -8,7 +8,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
--
|
||||
--- a/arch/mips/Kconfig
|
||||
+++ b/arch/mips/Kconfig
|
||||
@@ -961,6 +961,17 @@ config I8259
|
||||
@@ -978,6 +978,17 @@ config I8259
|
||||
config MIPS_BONITO64
|
||||
bool
|
||||
|
||||
@ -92,7 +92,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
+#endif /* CONFIG_MIPS_FPU_EMU */
|
||||
--- a/arch/mips/math-emu/dsemul.c
|
||||
+++ b/arch/mips/math-emu/dsemul.c
|
||||
@@ -109,6 +109,7 @@ int mips_dsemul(struct pt_regs *regs, mi
|
||||
@@ -108,6 +108,7 @@ int mips_dsemul(struct pt_regs *regs, mi
|
||||
return SIGILL; /* force out of emulation loop */
|
||||
}
|
||||
|
||||
@ -100,7 +100,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
||||
int do_dsemulret(struct pt_regs *xcp)
|
||||
{
|
||||
struct emuframe __user *fr;
|
||||
@@ -165,3 +166,9 @@ int do_dsemulret(struct pt_regs *xcp)
|
||||
@@ -164,3 +165,9 @@ int do_dsemulret(struct pt_regs *xcp)
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
--- a/arch/mips/include/asm/module.h
|
||||
+++ b/arch/mips/include/asm/module.h
|
||||
@@ -9,6 +9,11 @@ struct mod_arch_specific {
|
||||
@@ -11,6 +11,11 @@ struct mod_arch_specific {
|
||||
const struct exception_table_entry *dbe_start;
|
||||
const struct exception_table_entry *dbe_end;
|
||||
struct mips_hi16 *r_mips_hi16_list;
|
||||
@ -27,7 +27,7 @@
|
||||
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
|
||||
--- a/arch/mips/kernel/module.c
|
||||
+++ b/arch/mips/kernel/module.c
|
||||
@@ -44,14 +44,219 @@ static struct mips_hi16 *mips_hi16_list;
|
||||
@@ -42,14 +42,219 @@ struct mips_hi16 {
|
||||
static LIST_HEAD(dbe_list);
|
||||
static DEFINE_SPINLOCK(dbe_lock);
|
||||
|
||||
@ -248,7 +248,7 @@
|
||||
|
||||
static int apply_r_mips_none(struct module *me, u32 *location, Elf_Addr v)
|
||||
{
|
||||
@@ -72,28 +277,36 @@ static int apply_r_mips_32_rela(struct m
|
||||
@@ -70,28 +275,36 @@ static int apply_r_mips_32_rela(struct m
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -301,7 +301,7 @@
|
||||
{
|
||||
if (v % 4) {
|
||||
pr_err("module %s: dangerous R_MIPS_26 RELArelocation\n",
|
||||
@@ -102,17 +315,31 @@ static int apply_r_mips_26_rela(struct m
|
||||
@@ -100,17 +313,31 @@ static int apply_r_mips_26_rela(struct m
|
||||
}
|
||||
|
||||
if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
|
||||
@ -336,7 +336,7 @@
|
||||
static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
|
||||
{
|
||||
struct mips_hi16 *n;
|
||||
@@ -380,11 +607,32 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
@@ -405,11 +632,32 @@ int module_finalize(const Elf_Ehdr *hdr,
|
||||
list_add(&me->arch.dbe_list, &dbe_list);
|
||||
spin_unlock_irq(&dbe_lock);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
--- a/arch/mips/oprofile/op_model_mipsxx.c
|
||||
+++ b/arch/mips/oprofile/op_model_mipsxx.c
|
||||
@@ -298,6 +298,11 @@ static void reset_counters(void *arg)
|
||||
}
|
||||
@@ -303,6 +303,11 @@ static irqreturn_t mipsxx_perfcount_int(
|
||||
return mipsxx_perfcount_handler();
|
||||
}
|
||||
|
||||
+static irqreturn_t mipsxx_perfcount_int(int irq, void *dev_id)
|
||||
@ -12,9 +12,9 @@
|
||||
static int __init mipsxx_init(void)
|
||||
{
|
||||
int counters;
|
||||
@@ -374,6 +379,10 @@ static int __init mipsxx_init(void)
|
||||
save_perf_irq = perf_irq;
|
||||
perf_irq = mipsxx_perfcount_handler;
|
||||
@@ -385,6 +390,10 @@ static int __init mipsxx_init(void)
|
||||
return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
|
||||
0, "Perfcounter", save_perf_irq);
|
||||
|
||||
+ if (cp0_perfcount_irq >= 0)
|
||||
+ return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
|
||||
@ -23,9 +23,9 @@
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -381,6 +390,9 @@ static void mipsxx_exit(void)
|
||||
{
|
||||
int counters = op_model_mipsxx_ops.num_counters;
|
||||
@@ -395,6 +404,9 @@ static void mipsxx_exit(void)
|
||||
if ((cp0_perfcount_irq >= 0) && (cp0_compare_irq != cp0_perfcount_irq))
|
||||
free_irq(cp0_perfcount_irq, save_perf_irq);
|
||||
|
||||
+ if (cp0_perfcount_irq >= 0)
|
||||
+ free_irq(cp0_perfcount_irq, save_perf_irq);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/arch/mips/kernel/cpu-probe.c
|
||||
+++ b/arch/mips/kernel/cpu-probe.c
|
||||
@@ -816,10 +816,13 @@ static inline void cpu_probe_mips(struct
|
||||
@@ -833,10 +833,13 @@ static inline void cpu_probe_mips(struct
|
||||
__cpu_name[cpu] = "MIPS 20Kc";
|
||||
break;
|
||||
case PRID_IMP_24K:
|
||||
|
@ -3,7 +3,7 @@ they still want to support gcc 3.3 -- well, we don't.
|
||||
|
||||
--- a/arch/powerpc/Makefile
|
||||
+++ b/arch/powerpc/Makefile
|
||||
@@ -130,7 +130,8 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
|
||||
@@ -119,7 +119,8 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
|
||||
KBUILD_CFLAGS += -mno-sched-epilog
|
||||
endif
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
--- a/arch/powerpc/Makefile
|
||||
+++ b/arch/powerpc/Makefile
|
||||
@@ -94,7 +94,6 @@ else
|
||||
endif
|
||||
endif
|
||||
@@ -86,7 +86,6 @@ CPP = $(CC) -E $(KBUILD_CFLAGS)
|
||||
|
||||
CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
|
||||
|
||||
-KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
|
||||
|
||||
ifeq ($(CONFIG_TUNE_CELL),y)
|
||||
KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
|
||||
# No AltiVec or VSX instructions when building kernel
|
||||
KBUILD_CFLAGS += $(call cc-option,-mno-altivec)
|
||||
|
@ -437,7 +437,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
||||
|
||||
#include <asm/addrspace.h>
|
||||
#include <asm/bootinfo.h>
|
||||
@@ -523,12 +524,62 @@ static void __init arch_mem_init(char **
|
||||
@@ -522,12 +523,62 @@ static void __init arch_mem_init(char **
|
||||
}
|
||||
|
||||
bootmem_init();
|
||||
@ -500,7 +500,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
||||
static void __init resource_init(void)
|
||||
{
|
||||
int i;
|
||||
@@ -544,6 +595,8 @@ static void __init resource_init(void)
|
||||
@@ -543,6 +594,8 @@ static void __init resource_init(void)
|
||||
/*
|
||||
* Request address space for all standard RAM.
|
||||
*/
|
||||
@ -509,7 +509,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
||||
for (i = 0; i < boot_mem_map.nr_map; i++) {
|
||||
struct resource *res;
|
||||
unsigned long start, end;
|
||||
@@ -580,6 +633,7 @@ static void __init resource_init(void)
|
||||
@@ -579,6 +632,7 @@ static void __init resource_init(void)
|
||||
*/
|
||||
request_resource(res, &code_resource);
|
||||
request_resource(res, &data_resource);
|
||||
@ -519,7 +519,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
||||
|
||||
--- a/arch/mips/kernel/smp.c
|
||||
+++ b/arch/mips/kernel/smp.c
|
||||
@@ -433,3 +433,21 @@ void flush_tlb_one(unsigned long vaddr)
|
||||
@@ -386,3 +386,21 @@ void flush_tlb_one(unsigned long vaddr)
|
||||
|
||||
EXPORT_SYMBOL(flush_tlb_page);
|
||||
EXPORT_SYMBOL(flush_tlb_one);
|
||||
|
@ -146,7 +146,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
||||
- .size relocate_new_kernel_size, PTRSIZE
|
||||
--- a/arch/mips/kernel/vmlinux.lds.S
|
||||
+++ b/arch/mips/kernel/vmlinux.lds.S
|
||||
@@ -50,6 +50,10 @@ SECTIONS
|
||||
@@ -51,6 +51,10 @@ SECTIONS
|
||||
*(.text.*)
|
||||
*(.fixup)
|
||||
*(.gnu.warning)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/kernel/module.c
|
||||
+++ b/kernel/module.c
|
||||
@@ -2322,12 +2322,15 @@ static void dynamic_debug_remove(struct
|
||||
@@ -2353,12 +2353,15 @@ static void dynamic_debug_remove(struct
|
||||
|
||||
void * __weak module_alloc(unsigned long size)
|
||||
{
|
||||
|
@ -31,11 +31,11 @@
|
||||
*/
|
||||
#define PART(x) ((struct mtd_part *)(x))
|
||||
-
|
||||
+#define IS_PART(mtd) (mtd->read == part_read)
|
||||
+#define IS_PART(mtd) (mtd->_read == part_read)
|
||||
|
||||
/*
|
||||
* MTD methods which simply translate the effective address and pass through
|
||||
@@ -643,6 +645,155 @@ int mtd_del_partition(struct mtd_info *m
|
||||
@@ -613,6 +615,155 @@ int mtd_del_partition(struct mtd_info *m
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(mtd_del_partition);
|
||||
|
||||
@ -55,7 +55,7 @@
|
||||
+ struct squashfs_super_block sb;
|
||||
+ int len, ret;
|
||||
+
|
||||
+ ret = master->read(master, offset, sizeof(sb), &len, (void *) &sb);
|
||||
+ ret = master->_read(master, offset, sizeof(sb), &len, (void *) &sb);
|
||||
+ if (ret || (len != sizeof(sb))) {
|
||||
+ printk(KERN_ALERT "split_squashfs: error occured while reading "
|
||||
+ "from \"%s\"\n", master->name);
|
||||
@ -191,7 +191,7 @@
|
||||
/*
|
||||
* This function, given a master MTD object and a partition table, creates
|
||||
* and registers slave MTD objects which are bound to the master according to
|
||||
@@ -659,6 +810,9 @@ int add_mtd_partitions(struct mtd_info *
|
||||
@@ -629,6 +780,9 @@ int add_mtd_partitions(struct mtd_info *
|
||||
struct mtd_part *slave;
|
||||
uint64_t cur_offset = 0;
|
||||
int i;
|
||||
@ -201,7 +201,7 @@
|
||||
|
||||
printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
|
||||
|
||||
@@ -673,12 +827,53 @@ int add_mtd_partitions(struct mtd_info *
|
||||
@@ -643,12 +797,53 @@ int add_mtd_partitions(struct mtd_info *
|
||||
|
||||
add_mtd_device(&slave->mtd);
|
||||
|
||||
@ -257,7 +257,7 @@
|
||||
|
||||
--- a/drivers/mtd/mtdchar.c
|
||||
+++ b/drivers/mtd/mtdchar.c
|
||||
@@ -1005,6 +1005,12 @@ static int mtdchar_ioctl(struct file *fi
|
||||
@@ -1012,6 +1012,12 @@ static int mtdchar_ioctl(struct file *fi
|
||||
break;
|
||||
}
|
||||
|
||||
@ -280,7 +280,7 @@
|
||||
struct mtd_info {
|
||||
u_char type;
|
||||
uint32_t flags;
|
||||
@@ -214,6 +215,9 @@ struct mtd_info {
|
||||
@@ -226,6 +227,9 @@ struct mtd_info {
|
||||
int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
|
||||
int (*_suspend) (struct mtd_info *mtd);
|
||||
void (*_resume) (struct mtd_info *mtd);
|
||||
@ -290,7 +290,7 @@
|
||||
/*
|
||||
* If the driver is something smart, like UBI, it may need to maintain
|
||||
* its own reference counting. The below functions are only for driver.
|
||||
@@ -502,6 +506,7 @@ extern int mtd_device_parse_register(str
|
||||
@@ -375,6 +379,7 @@ extern int mtd_device_parse_register(str
|
||||
int defnr_parts);
|
||||
#define mtd_device_register(master, parts, nr_parts) \
|
||||
mtd_device_parse_register(master, NULL, NULL, parts, nr_parts)
|
||||
|
@ -9,7 +9,7 @@
|
||||
/* Our partition linked list */
|
||||
static LIST_HEAD(mtd_partitions);
|
||||
static DEFINE_MUTEX(mtd_partitions_mutex);
|
||||
@@ -252,13 +254,60 @@ static int part_erase(struct mtd_info *m
|
||||
@@ -230,13 +232,60 @@ static int part_erase(struct mtd_info *m
|
||||
struct mtd_part *part = PART(mtd);
|
||||
int ret;
|
||||
|
||||
@ -70,21 +70,21 @@
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -266,7 +315,25 @@ void mtd_erase_callback(struct erase_inf
|
||||
@@ -244,7 +293,25 @@ void mtd_erase_callback(struct erase_inf
|
||||
{
|
||||
if (instr->mtd->erase == part_erase) {
|
||||
if (instr->mtd->_erase == part_erase) {
|
||||
struct mtd_part *part = PART(instr->mtd);
|
||||
+ size_t wrlen = 0;
|
||||
|
||||
+ if (instr->mtd->flags & MTD_ERASE_PARTIAL) {
|
||||
+ if (instr->partial_start) {
|
||||
+ part->master->write(part->master,
|
||||
+ part->master->_write(part->master,
|
||||
+ instr->addr, instr->erase_buf_ofs,
|
||||
+ &wrlen, instr->erase_buf);
|
||||
+ instr->addr += instr->erase_buf_ofs;
|
||||
+ } else {
|
||||
+ instr->len -= instr->erase_buf_ofs;
|
||||
+ part->master->write(part->master,
|
||||
+ part->master->_write(part->master,
|
||||
+ instr->addr + instr->len,
|
||||
+ instr->erase_buf_ofs, &wrlen,
|
||||
+ instr->erase_buf +
|
||||
@ -96,7 +96,7 @@
|
||||
if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
|
||||
instr->fail_addr -= part->offset;
|
||||
instr->addr -= part->offset;
|
||||
@@ -537,18 +604,24 @@ static struct mtd_part *allocate_partiti
|
||||
@@ -504,18 +571,24 @@ static struct mtd_part *allocate_partiti
|
||||
if ((slave->mtd.flags & MTD_WRITEABLE) &&
|
||||
mtd_mod_by_eb(slave->offset, &slave->mtd)) {
|
||||
/* Doesn't start on a boundary of major erase size */
|
||||
@ -129,7 +129,7 @@
|
||||
+ part->name);
|
||||
|
||||
slave->mtd.ecclayout = master->ecclayout;
|
||||
if (master->block_isbad) {
|
||||
slave->mtd.ecc_strength = master->ecc_strength;
|
||||
--- a/include/linux/mtd/mtd.h
|
||||
+++ b/include/linux/mtd/mtd.h
|
||||
@@ -58,6 +58,10 @@ struct erase_info {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/redboot.c
|
||||
+++ b/drivers/mtd/redboot.c
|
||||
@@ -267,14 +267,21 @@ static int parse_redboot_partitions(stru
|
||||
@@ -265,14 +265,21 @@ static int parse_redboot_partitions(stru
|
||||
#endif
|
||||
names += strlen(names)+1;
|
||||
|
||||
|
@ -17,7 +17,7 @@
|
||||
int nrparts = 0;
|
||||
struct fis_image_desc *buf;
|
||||
struct mtd_partition *parts;
|
||||
@@ -227,14 +230,14 @@ static int parse_redboot_partitions(stru
|
||||
@@ -225,14 +228,14 @@ static int parse_redboot_partitions(stru
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -34,7 +34,7 @@
|
||||
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
|
||||
if (nulllen > 0) {
|
||||
strcpy(nullname, nullstring);
|
||||
@@ -253,6 +256,8 @@ static int parse_redboot_partitions(stru
|
||||
@@ -251,6 +254,8 @@ static int parse_redboot_partitions(stru
|
||||
}
|
||||
#endif
|
||||
for ( ; i<nrparts; i++) {
|
||||
@ -43,7 +43,7 @@
|
||||
parts[i].size = fl->img->size;
|
||||
parts[i].offset = fl->img->flash_base;
|
||||
parts[i].name = names;
|
||||
@@ -286,6 +291,14 @@ static int parse_redboot_partitions(stru
|
||||
@@ -284,6 +289,14 @@ static int parse_redboot_partitions(stru
|
||||
fl = fl->next;
|
||||
kfree(tmp_fl);
|
||||
}
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/mount.h>
|
||||
#include <linux/slab.h>
|
||||
@@ -231,11 +232,12 @@ static void block2mtd_free_device(struct
|
||||
@@ -208,11 +209,12 @@ static void block2mtd_free_device(struct
|
||||
|
||||
|
||||
/* FIXME: ensure that mtd->size % erase_size == 0 */
|
||||
@ -22,7 +22,7 @@
|
||||
char *name;
|
||||
|
||||
if (!devname)
|
||||
@@ -274,13 +276,16 @@ static struct block2mtd_dev *add_device(
|
||||
@@ -251,13 +253,16 @@ static struct block2mtd_dev *add_device(
|
||||
|
||||
/* Setup the MTD structure */
|
||||
/* make the name contain the block device in */
|
||||
@ -41,7 +41,7 @@
|
||||
dev->mtd.erasesize = erase_size;
|
||||
dev->mtd.writesize = 1;
|
||||
dev->mtd.writebufsize = PAGE_SIZE;
|
||||
@@ -294,14 +299,17 @@ static struct block2mtd_dev *add_device(
|
||||
@@ -270,14 +275,17 @@ static struct block2mtd_dev *add_device(
|
||||
dev->mtd.priv = dev;
|
||||
dev->mtd.owner = THIS_MODULE;
|
||||
|
||||
@ -62,7 +62,7 @@
|
||||
return dev;
|
||||
|
||||
devinit_err:
|
||||
@@ -374,9 +382,9 @@ static char block2mtd_paramline[80 + 12]
|
||||
@@ -350,9 +358,9 @@ static char block2mtd_paramline[80 + 12]
|
||||
|
||||
static int block2mtd_setup2(const char *val)
|
||||
{
|
||||
@ -74,7 +74,7 @@
|
||||
char *name;
|
||||
size_t erase_size = PAGE_SIZE;
|
||||
int i, ret;
|
||||
@@ -387,7 +395,7 @@ static int block2mtd_setup2(const char *
|
||||
@@ -363,7 +371,7 @@ static int block2mtd_setup2(const char *
|
||||
strcpy(str, val);
|
||||
kill_final_newline(str);
|
||||
|
||||
@ -83,7 +83,7 @@
|
||||
token[i] = strsep(&str, ",");
|
||||
|
||||
if (str)
|
||||
@@ -406,8 +414,10 @@ static int block2mtd_setup2(const char *
|
||||
@@ -382,8 +390,10 @@ static int block2mtd_setup2(const char *
|
||||
parse_err("illegal erase size");
|
||||
}
|
||||
}
|
||||
@ -95,7 +95,7 @@
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -441,7 +451,7 @@ static int block2mtd_setup(const char *v
|
||||
@@ -417,7 +427,7 @@ static int block2mtd_setup(const char *v
|
||||
|
||||
|
||||
module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
|
||||
@ -106,7 +106,7 @@
|
||||
{
|
||||
--- a/block/partition-generic.c
|
||||
+++ b/block/partition-generic.c
|
||||
@@ -546,6 +546,7 @@ int invalidate_partitions(struct gendisk
|
||||
@@ -548,6 +548,7 @@ int invalidate_partitions(struct gendisk
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/devices/block2mtd.c
|
||||
+++ b/drivers/mtd/devices/block2mtd.c
|
||||
@@ -29,6 +29,8 @@
|
||||
@@ -29,6 +29,8 @@ struct block2mtd_dev {
|
||||
struct block_device *blkdev;
|
||||
struct mtd_info mtd;
|
||||
struct mutex write_mutex;
|
||||
@ -9,7 +9,7 @@
|
||||
};
|
||||
|
||||
|
||||
@@ -79,6 +81,12 @@
|
||||
@@ -79,6 +81,12 @@ static int block2mtd_erase(struct mtd_in
|
||||
size_t len = instr->len;
|
||||
int err;
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
instr->state = MTD_ERASING;
|
||||
mutex_lock(&dev->write_mutex);
|
||||
err = _block2mtd_erase(dev, from, len);
|
||||
@@ -90,6 +98,10 @@
|
||||
@@ -90,6 +98,10 @@ static int block2mtd_erase(struct mtd_in
|
||||
instr->state = MTD_ERASE_DONE;
|
||||
|
||||
mtd_erase_callback(instr);
|
||||
@ -33,7 +33,7 @@
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -101,7 +113,13 @@
|
||||
@@ -101,7 +113,13 @@ static int block2mtd_read(struct mtd_inf
|
||||
struct page *page;
|
||||
int index = from >> PAGE_SHIFT;
|
||||
int offset = from & (PAGE_SIZE-1);
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
while (len) {
|
||||
if ((offset + len) > PAGE_SIZE)
|
||||
@@ -111,8 +129,10 @@
|
||||
@@ -111,8 +129,10 @@ static int block2mtd_read(struct mtd_inf
|
||||
len = len - cpylen;
|
||||
|
||||
page = page_read(dev->blkdev->bd_inode->i_mapping, index);
|
||||
@ -60,7 +60,7 @@
|
||||
|
||||
memcpy(buf, page_address(page) + offset, cpylen);
|
||||
page_cache_release(page);
|
||||
@@ -123,7 +143,10 @@
|
||||
@@ -123,7 +143,10 @@ static int block2mtd_read(struct mtd_inf
|
||||
offset = 0;
|
||||
index++;
|
||||
}
|
||||
@ -72,7 +72,7 @@
|
||||
}
|
||||
|
||||
|
||||
@@ -171,13 +194,22 @@
|
||||
@@ -171,13 +194,22 @@ static int block2mtd_write(struct mtd_in
|
||||
size_t *retlen, const u_char *buf)
|
||||
{
|
||||
struct block2mtd_dev *dev = mtd->priv;
|
||||
@ -96,7 +96,7 @@
|
||||
return err;
|
||||
}
|
||||
|
||||
@@ -186,33 +218,110 @@
|
||||
@@ -186,33 +218,110 @@ static int block2mtd_write(struct mtd_in
|
||||
static void block2mtd_sync(struct mtd_info *mtd)
|
||||
{
|
||||
struct block2mtd_dev *dev = mtd->priv;
|
||||
@ -217,7 +217,7 @@
|
||||
struct block2mtd_dev *dev;
|
||||
struct mtd_partition *part;
|
||||
char *name;
|
||||
@@ -220,36 +329,17 @@
|
||||
@@ -220,36 +329,17 @@ static struct block2mtd_dev *add_device(
|
||||
if (!devname)
|
||||
return NULL;
|
||||
|
||||
@ -258,7 +258,7 @@
|
||||
|
||||
/* Setup the MTD structure */
|
||||
/* make the name contain the block device in */
|
||||
@@ -274,6 +364,7 @@
|
||||
@@ -274,6 +364,7 @@ static struct block2mtd_dev *add_device(
|
||||
dev->mtd._read = block2mtd_read;
|
||||
dev->mtd.priv = dev;
|
||||
dev->mtd.owner = THIS_MODULE;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/devices/block2mtd.c
|
||||
+++ b/drivers/mtd/devices/block2mtd.c
|
||||
@@ -268,6 +268,7 @@ static int _open_bdev(struct block2mtd_d
|
||||
@@ -241,6 +241,7 @@ static int _open_bdev(struct block2mtd_d
|
||||
/* We might not have rootfs mounted at this point. Try
|
||||
to resolve the device name by other means. */
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
/* Keep gcc happy */
|
||||
--- a/drivers/mtd/nand/plat_nand.c
|
||||
+++ b/drivers/mtd/nand/plat_nand.c
|
||||
@@ -93,7 +93,18 @@ static int __devinit plat_nand_probe(str
|
||||
@@ -98,7 +98,18 @@ static int __devinit plat_nand_probe(str
|
||||
}
|
||||
|
||||
/* Scan to find existence of the device */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
@@ -682,7 +682,7 @@ static int get_chip(struct map_info *map
|
||||
@@ -700,7 +700,7 @@ static int get_chip(struct map_info *map
|
||||
return 0;
|
||||
|
||||
case FL_ERASING:
|
||||
|
@ -8,7 +8,7 @@
|
||||
#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
|
||||
#define OPCODE_RDID 0x9f /* Read JEDEC ID */
|
||||
|
||||
@@ -625,6 +626,7 @@ struct flash_info {
|
||||
@@ -594,6 +595,7 @@ struct flash_info {
|
||||
u16 flags;
|
||||
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
|
||||
#define M25P_NO_ERASE 0x02 /* No erase command needed */
|
||||
@ -16,7 +16,7 @@
|
||||
};
|
||||
|
||||
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
|
||||
@@ -686,6 +688,10 @@ static const struct spi_device_id m25p_i
|
||||
@@ -659,6 +661,10 @@ static const struct spi_device_id m25p_i
|
||||
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },
|
||||
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
/* Spansion -- single (large) sector size only, at least
|
||||
* for the chips listed here (without boot sectors).
|
||||
*/
|
||||
@@ -921,6 +927,9 @@ static int __devinit m25p_probe(struct s
|
||||
@@ -895,6 +901,9 @@ static int __devinit m25p_probe(struct s
|
||||
if (info->flags & SECT_4K) {
|
||||
flash->erase_opcode = OPCODE_BE_4K;
|
||||
flash->mtd.erasesize = 4096;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/devices/m25p80.c
|
||||
+++ b/drivers/mtd/devices/m25p80.c
|
||||
@@ -765,6 +765,7 @@ static const struct spi_device_id m25p_i
|
||||
@@ -739,6 +739,7 @@ static const struct spi_device_id m25p_i
|
||||
{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||
{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
|
||||
{ "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) },
|
||||
|
@ -8,7 +8,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
|
||||
1 file changed, 1 insertion(+)
|
||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||
@@ -1409,6 +1409,7 @@ static int __xipram do_write_buffer(stru
|
||||
@@ -1413,6 +1413,7 @@ static int __xipram do_write_buffer(stru
|
||||
|
||||
/* Write Buffer Load */
|
||||
map_write(map, CMD(0x25), cmd_adr);
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/drivers/mtd/devices/Kconfig
|
||||
+++ b/drivers/mtd/devices/Kconfig
|
||||
@@ -102,6 +102,14 @@ config M25PXX_USE_FAST_READ
|
||||
@@ -110,6 +110,14 @@ config MTD_SPEAR_SMI
|
||||
help
|
||||
This option enables FAST_READ access supported by ST M25Pxx.
|
||||
This enable SNOR support on SPEAR platforms using SMI controller
|
||||
|
||||
+config M25PXX_PREFER_SMALL_SECTOR_ERASE
|
||||
+ bool "Prefer small sector erase"
|
||||
@ -30,8 +30,8 @@
|
||||
/****************************************************************************/
|
||||
|
||||
struct m25p {
|
||||
@@ -925,7 +931,7 @@ static int __devinit m25p_probe(struct s
|
||||
flash->mtd.write = m25p80_write;
|
||||
@@ -899,7 +905,7 @@ static int __devinit m25p_probe(struct s
|
||||
flash->mtd._write = m25p80_write;
|
||||
|
||||
/* prefer "small sector" erase if possible */
|
||||
- if (info->flags & SECT_4K) {
|
||||
|
@ -1,10 +1,10 @@
|
||||
--- a/drivers/mtd/devices/m25p80.c
|
||||
+++ b/drivers/mtd/devices/m25p80.c
|
||||
@@ -677,6 +677,7 @@ static const struct spi_device_id m25p_i
|
||||
@@ -646,6 +646,7 @@ static const struct spi_device_id m25p_i
|
||||
{ "en25p32", INFO(0x1c2016, 0, 64 * 1024, 64, 0) },
|
||||
{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) },
|
||||
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },
|
||||
+ { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||
|
||||
/* Intel/Numonyx -- xxxs33b */
|
||||
{ "160s33b", INFO(0x898911, 0, 64 * 1024, 32, 0) },
|
||||
/* Everspin */
|
||||
{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2) },
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/mtd/mtdpart.c
|
||||
+++ b/drivers/mtd/mtdpart.c
|
||||
@@ -356,7 +356,14 @@ static int part_unlock(struct mtd_info *
|
||||
@@ -330,7 +330,14 @@ static int part_lock(struct mtd_info *mt
|
||||
static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
|
||||
{
|
||||
struct mtd_part *part = PART(mtd);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/fs/Kconfig
|
||||
+++ b/fs/Kconfig
|
||||
@@ -35,6 +35,7 @@ source "fs/gfs2/Kconfig"
|
||||
@@ -39,6 +39,7 @@ source "fs/gfs2/Kconfig"
|
||||
source "fs/ocfs2/Kconfig"
|
||||
source "fs/btrfs/Kconfig"
|
||||
source "fs/nilfs2/Kconfig"
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
--- a/fs/Makefile
|
||||
+++ b/fs/Makefile
|
||||
@@ -125,3 +125,5 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
|
||||
@@ -126,3 +126,5 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
|
||||
obj-y += exofs/ # Multiple modules
|
||||
obj-$(CONFIG_CEPH_FS) += ceph/
|
||||
obj-$(CONFIG_PSTORE) += pstore/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/fs/Kconfig
|
||||
+++ b/fs/Kconfig
|
||||
@@ -35,7 +35,6 @@ source "fs/gfs2/Kconfig"
|
||||
@@ -39,7 +39,6 @@ source "fs/gfs2/Kconfig"
|
||||
source "fs/ocfs2/Kconfig"
|
||||
source "fs/btrfs/Kconfig"
|
||||
source "fs/nilfs2/Kconfig"
|
||||
@ -8,7 +8,7 @@
|
||||
|
||||
endif # BLOCK
|
||||
|
||||
@@ -201,6 +200,10 @@ source "fs/hfsplus/Kconfig"
|
||||
@@ -205,6 +204,10 @@ source "fs/hfsplus/Kconfig"
|
||||
source "fs/befs/Kconfig"
|
||||
source "fs/bfs/Kconfig"
|
||||
source "fs/efs/Kconfig"
|
||||
@ -21,7 +21,7 @@
|
||||
source "fs/ubifs/Kconfig"
|
||||
--- a/fs/Makefile
|
||||
+++ b/fs/Makefile
|
||||
@@ -125,5 +125,6 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
|
||||
@@ -126,5 +126,6 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
|
||||
obj-y += exofs/ # Multiple modules
|
||||
obj-$(CONFIG_CEPH_FS) += ceph/
|
||||
obj-$(CONFIG_PSTORE) += pstore/
|
||||
|
@ -28,7 +28,7 @@
|
||||
+CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
|
||||
--- a/fs/jffs2/compr.c
|
||||
+++ b/fs/jffs2/compr.c
|
||||
@@ -374,6 +374,9 @@ int __init jffs2_compressors_init(void)
|
||||
@@ -378,6 +378,9 @@ int __init jffs2_compressors_init(void)
|
||||
#ifdef CONFIG_JFFS2_LZO
|
||||
jffs2_lzo_init();
|
||||
#endif
|
||||
@ -38,7 +38,7 @@
|
||||
/* Setting default compression mode */
|
||||
#ifdef CONFIG_JFFS2_CMODE_NONE
|
||||
jffs2_compression_mode = JFFS2_COMPR_MODE_NONE;
|
||||
@@ -397,6 +400,9 @@ int __init jffs2_compressors_init(void)
|
||||
@@ -401,6 +404,9 @@ int __init jffs2_compressors_init(void)
|
||||
int jffs2_compressors_exit(void)
|
||||
{
|
||||
/* Unregistering compressors */
|
||||
@ -206,7 +206,7 @@
|
||||
+}
|
||||
--- a/fs/jffs2/super.c
|
||||
+++ b/fs/jffs2/super.c
|
||||
@@ -371,14 +371,41 @@ static int __init init_jffs2_fs(void)
|
||||
@@ -373,14 +373,41 @@ static int __init init_jffs2_fs(void)
|
||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
|
||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
||||
|
||||
@ -1049,7 +1049,7 @@
|
||||
+#endif
|
||||
--- a/lib/Kconfig
|
||||
+++ b/lib/Kconfig
|
||||
@@ -118,6 +118,12 @@ config LZO_DECOMPRESS
|
||||
@@ -188,6 +188,12 @@ config LZO_DECOMPRESS
|
||||
|
||||
source "lib/xz/Kconfig"
|
||||
|
||||
|
@ -1,13 +1,12 @@
|
||||
--- a/fs/jffs2/build.c
|
||||
+++ b/fs/jffs2/build.c
|
||||
@@ -112,6 +112,17 @@ static int jffs2_build_filesystem(struct
|
||||
@@ -114,6 +114,16 @@ static int jffs2_build_filesystem(struct
|
||||
dbg_fsbuild("scanned flash completely\n");
|
||||
jffs2_dbg_dump_block_lists_nolock(c);
|
||||
|
||||
+ if (c->flags & (1 << 7)) {
|
||||
+ printk("%s(): unlocking the mtd device... ", __func__);
|
||||
+ if (c->mtd->unlock)
|
||||
+ c->mtd->unlock(c->mtd, 0, c->mtd->size);
|
||||
+ mtd_unlock(c->mtd, 0, c->mtd->size);
|
||||
+ printk("done.\n");
|
||||
+
|
||||
+ printk("%s(): erasing all blocks after the end marker... ", __func__);
|
||||
@ -20,7 +19,7 @@
|
||||
/* Now scan the directory tree, increasing nlink according to every dirent found. */
|
||||
--- a/fs/jffs2/scan.c
|
||||
+++ b/fs/jffs2/scan.c
|
||||
@@ -147,8 +147,11 @@ int jffs2_scan_medium(struct jffs2_sb_in
|
||||
@@ -148,8 +148,11 @@ int jffs2_scan_medium(struct jffs2_sb_in
|
||||
/* reset summary info for next eraseblock scan */
|
||||
jffs2_sum_reset_collected(s);
|
||||
|
||||
@ -34,7 +33,7 @@
|
||||
|
||||
if (ret < 0)
|
||||
goto out;
|
||||
@@ -549,6 +552,17 @@ static int jffs2_scan_eraseblock (struct
|
||||
@@ -556,6 +559,17 @@ static int jffs2_scan_eraseblock (struct
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/crypto/Kconfig
|
||||
+++ b/crypto/Kconfig
|
||||
@@ -924,6 +924,13 @@ config CRYPTO_LZO
|
||||
@@ -1008,6 +1008,13 @@ config CRYPTO_LZO
|
||||
help
|
||||
This is the LZO algorithm.
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/fs/ubifs/Kconfig
|
||||
+++ b/fs/ubifs/Kconfig
|
||||
@@ -5,8 +5,10 @@
|
||||
@@ -5,8 +5,10 @@ config UBIFS_FS
|
||||
select CRYPTO if UBIFS_FS_ADVANCED_COMPR
|
||||
select CRYPTO if UBIFS_FS_LZO
|
||||
select CRYPTO if UBIFS_FS_ZLIB
|
||||
@ -11,7 +11,7 @@
|
||||
depends on MTD_UBI
|
||||
help
|
||||
UBIFS is a file system for flash devices which works on top of UBI.
|
||||
@@ -35,3 +37,12 @@
|
||||
@@ -35,3 +37,12 @@ config UBIFS_FS_ZLIB
|
||||
default y
|
||||
help
|
||||
Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/fs/ubifs/file.c
|
||||
+++ b/fs/ubifs/file.c
|
||||
@@ -1575,6 +1575,12 @@ const struct inode_operations ubifs_syml
|
||||
@@ -1573,6 +1573,12 @@ const struct inode_operations ubifs_syml
|
||||
.follow_link = ubifs_follow_link,
|
||||
.setattr = ubifs_setattr,
|
||||
.getattr = ubifs_getattr,
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -1053,6 +1053,27 @@ config NETFILTER_XT_MATCH_STATE
|
||||
@@ -1119,6 +1119,27 @@ config NETFILTER_XT_MATCH_STATE
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
depends on NETFILTER_ADVANCED
|
||||
--- a/net/netfilter/Makefile
|
||||
+++ b/net/netfilter/Makefile
|
||||
@@ -105,6 +105,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
|
||||
@@ -112,6 +112,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
|
||||
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
|
||||
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
|
||||
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
|
||||
@ -2059,7 +2059,7 @@
|
||||
+}
|
||||
--- a/net/netfilter/nf_conntrack_core.c
|
||||
+++ b/net/netfilter/nf_conntrack_core.c
|
||||
@@ -214,6 +214,14 @@ destroy_conntrack(struct nf_conntrack *n
|
||||
@@ -215,6 +215,14 @@ destroy_conntrack(struct nf_conntrack *n
|
||||
* too. */
|
||||
nf_ct_remove_expectations(ct);
|
||||
|
||||
@ -2091,7 +2091,7 @@
|
||||
|
||||
--- a/include/net/netfilter/nf_conntrack.h
|
||||
+++ b/include/net/netfilter/nf_conntrack.h
|
||||
@@ -134,6 +134,22 @@ struct nf_conn {
|
||||
@@ -105,6 +105,22 @@ struct nf_conn {
|
||||
struct net *ct_net;
|
||||
#endif
|
||||
|
||||
@ -2132,7 +2132,7 @@
|
||||
+#endif /* _XT_LAYER7_H */
|
||||
--- a/include/linux/netfilter/Kbuild
|
||||
+++ b/include/linux/netfilter/Kbuild
|
||||
@@ -49,6 +49,7 @@ header-y += xt_hashlimit.h
|
||||
@@ -52,6 +52,7 @@ header-y += xt_hashlimit.h
|
||||
header-y += xt_helper.h
|
||||
header-y += xt_iprange.h
|
||||
header-y += xt_ipvs.h
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/netfilter/Kconfig
|
||||
+++ b/net/netfilter/Kconfig
|
||||
@@ -857,6 +857,27 @@ config NETFILTER_XT_MATCH_IPVS
|
||||
@@ -923,6 +923,27 @@ config NETFILTER_XT_MATCH_IPVS
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
config NETFILTER_XT_MATCH_LENGTH
|
||||
tristate '"length" match support'
|
||||
depends on NETFILTER_ADVANCED
|
||||
@@ -1053,26 +1074,11 @@ config NETFILTER_XT_MATCH_STATE
|
||||
@@ -1119,26 +1140,11 @@ config NETFILTER_XT_MATCH_STATE
|
||||
|
||||
To compile it as a module, choose M here. If unsure, say N.
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/include/linux/netfilter/nf_conntrack_sip.h
|
||||
+++ b/include/linux/netfilter/nf_conntrack_sip.h
|
||||
@@ -2,12 +2,15 @@
|
||||
#define __NF_CONNTRACK_SIP_H__
|
||||
#ifdef __KERNEL__
|
||||
@@ -4,12 +4,15 @@
|
||||
|
||||
#include <net/netfilter/nf_conntrack_expect.h>
|
||||
|
||||
+#include <linux/types.h>
|
||||
+
|
||||
@ -18,25 +18,32 @@
|
||||
enum sip_expectation_classes {
|
||||
--- a/net/ipv4/netfilter/nf_nat_sip.c
|
||||
+++ b/net/ipv4/netfilter/nf_nat_sip.c
|
||||
@@ -73,6 +73,7 @@ static int map_addr(struct sk_buff *skb,
|
||||
@@ -73,11 +73,14 @@ static int map_addr(struct sk_buff *skb,
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
||||
+ struct nf_conn_help *help = nfct_help(ct);
|
||||
+ struct nf_ct_sip_master *ct_sip_info;
|
||||
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
|
||||
unsigned int buflen;
|
||||
__be32 newaddr;
|
||||
@@ -85,7 +86,8 @@ static int map_addr(struct sk_buff *skb,
|
||||
__be16 newport;
|
||||
|
||||
+ ct_sip_info = nfct_help_data(ct->master);
|
||||
+
|
||||
if (ct->tuplehash[dir].tuple.src.u3.ip == addr->ip &&
|
||||
ct->tuplehash[dir].tuple.src.u.udp.port == port) {
|
||||
newaddr = ct->tuplehash[!dir].tuple.dst.u3.ip;
|
||||
@@ -85,7 +88,8 @@ static int map_addr(struct sk_buff *skb,
|
||||
} else if (ct->tuplehash[dir].tuple.dst.u3.ip == addr->ip &&
|
||||
ct->tuplehash[dir].tuple.dst.u.udp.port == port) {
|
||||
newaddr = ct->tuplehash[!dir].tuple.src.u3.ip;
|
||||
- newport = ct->tuplehash[!dir].tuple.src.u.udp.port;
|
||||
+ newport = help->help.ct_sip_info.forced_dport ? :
|
||||
+ newport = ct_sip_info->forced_dport ? :
|
||||
+ ct->tuplehash[!dir].tuple.src.u.udp.port;
|
||||
} else
|
||||
return 1;
|
||||
|
||||
@@ -121,6 +123,7 @@ static unsigned int ip_nat_sip(struct sk
|
||||
@@ -121,6 +125,7 @@ static unsigned int ip_nat_sip(struct sk
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
||||
@ -44,19 +51,21 @@
|
||||
unsigned int coff, matchoff, matchlen;
|
||||
enum sip_header_types hdr;
|
||||
union nf_inet_addr addr;
|
||||
@@ -229,6 +232,20 @@ next:
|
||||
@@ -230,6 +235,22 @@ next:
|
||||
!map_sip_addr(skb, dataoff, dptr, datalen, SIP_HDR_TO))
|
||||
return NF_DROP;
|
||||
|
||||
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
|
||||
+
|
||||
+ /* Mangle destination port for Cisco phones, then fix up checksums */
|
||||
+ if (dir == IP_CT_DIR_REPLY && help->help.ct_sip_info.forced_dport) {
|
||||
+ if (dir == IP_CT_DIR_REPLY && ct_sip_info->forced_dport) {
|
||||
+ struct udphdr *uh;
|
||||
+
|
||||
+ if (!skb_make_writable(skb, skb->len))
|
||||
+ return NF_DROP;
|
||||
+
|
||||
+ uh = (struct udphdr *)(skb->data + ip_hdrlen(skb));
|
||||
+ uh->dest = help->help.ct_sip_info.forced_dport;
|
||||
+ uh->dest = ct_sip_info->forced_dport;
|
||||
+
|
||||
+ if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, 0, 0, NULL, 0))
|
||||
+ return NF_DROP;
|
||||
@ -65,7 +74,7 @@
|
||||
return NF_ACCEPT;
|
||||
}
|
||||
|
||||
@@ -280,8 +297,10 @@ static unsigned int ip_nat_sip_expect(st
|
||||
@@ -281,10 +302,13 @@ static unsigned int ip_nat_sip_expect(st
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
||||
@ -74,15 +83,18 @@
|
||||
u_int16_t port;
|
||||
+ __be16 srcport;
|
||||
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
|
||||
unsigned buflen;
|
||||
unsigned int buflen;
|
||||
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
|
||||
|
||||
@@ -294,8 +313,9 @@ static unsigned int ip_nat_sip_expect(st
|
||||
/* Connection will come from reply */
|
||||
if (ct->tuplehash[dir].tuple.src.u3.ip == ct->tuplehash[!dir].tuple.dst.u3.ip)
|
||||
@@ -295,8 +319,9 @@ static unsigned int ip_nat_sip_expect(st
|
||||
/* If the signalling port matches the connection's source port in the
|
||||
* original direction, try to use the destination port in the opposite
|
||||
* direction. */
|
||||
- if (exp->tuple.dst.u.udp.port ==
|
||||
- ct->tuplehash[dir].tuple.src.u.udp.port)
|
||||
+ srcport = help->help.ct_sip_info.forced_dport ? :
|
||||
+ srcport = ct_sip_info->forced_dport ? :
|
||||
+ ct->tuplehash[dir].tuple.src.u.udp.port;
|
||||
+ if (exp->tuple.dst.u.udp.port == srcport)
|
||||
port = ntohs(ct->tuplehash[!dir].tuple.dst.u.udp.port);
|
||||
@ -90,7 +102,7 @@
|
||||
port = ntohs(exp->tuple.dst.u.udp.port);
|
||||
--- a/net/netfilter/nf_conntrack_sip.c
|
||||
+++ b/net/netfilter/nf_conntrack_sip.c
|
||||
@@ -1363,8 +1363,25 @@ static int process_sip_request(struct sk
|
||||
@@ -1416,8 +1416,26 @@ static int process_sip_request(struct sk
|
||||
{
|
||||
enum ip_conntrack_info ctinfo;
|
||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||
@ -100,6 +112,7 @@
|
||||
unsigned int cseq, i;
|
||||
+ union nf_inet_addr addr;
|
||||
+ __be16 port;
|
||||
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
|
||||
+
|
||||
+ /* Many Cisco IP phones use a high source port for SIP requests, but
|
||||
+ * listen for the response on port 5060. If we are the local
|
||||
@ -112,7 +125,7 @@
|
||||
+ &matchlen, &addr, &port) > 0 &&
|
||||
+ port != ct->tuplehash[dir].tuple.src.u.udp.port &&
|
||||
+ nf_inet_addr_cmp(&addr, &ct->tuplehash[dir].tuple.src.u3))
|
||||
+ help->help.ct_sip_info.forced_dport = port;
|
||||
+ ct_sip_info->forced_dport = port;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
|
||||
const struct sip_handler *handler;
|
||||
|
@ -50,7 +50,7 @@
|
||||
static bool
|
||||
ip_checkentry(const struct ipt_ip *ip)
|
||||
{
|
||||
@@ -561,7 +587,7 @@ static void cleanup_match(struct xt_entr
|
||||
@@ -560,7 +586,7 @@ static void cleanup_match(struct xt_entr
|
||||
}
|
||||
|
||||
static int
|
||||
@ -59,7 +59,7 @@
|
||||
{
|
||||
const struct xt_entry_target *t;
|
||||
|
||||
@@ -570,6 +596,8 @@ check_entry(const struct ipt_entry *e, c
|
||||
@@ -569,6 +595,8 @@ check_entry(const struct ipt_entry *e, c
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@
|
||||
if (e->target_offset + sizeof(struct xt_entry_target) >
|
||||
e->next_offset)
|
||||
return -EINVAL;
|
||||
@@ -931,6 +959,7 @@ copy_entries_to_user(unsigned int total_
|
||||
@@ -930,6 +958,7 @@ copy_entries_to_user(unsigned int total_
|
||||
const struct xt_table_info *private = table->private;
|
||||
int ret = 0;
|
||||
const void *loc_cpu_entry;
|
||||
@ -76,7 +76,7 @@
|
||||
|
||||
counters = alloc_counters(table);
|
||||
if (IS_ERR(counters))
|
||||
@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
|
||||
@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
|
||||
ret = -EFAULT;
|
||||
goto free_counters;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/ipv4/netfilter/ip_tables.c
|
||||
+++ b/net/ipv4/netfilter/ip_tables.c
|
||||
@@ -310,6 +310,33 @@ struct ipt_entry *ipt_next_entry(const s
|
||||
@@ -309,6 +309,33 @@ struct ipt_entry *ipt_next_entry(const s
|
||||
return (void *)entry + entry->next_offset;
|
||||
}
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
/* Returns one of the generic firewall policies, like NF_ACCEPT. */
|
||||
unsigned int
|
||||
ipt_do_table(struct sk_buff *skb,
|
||||
@@ -334,6 +361,25 @@ ipt_do_table(struct sk_buff *skb,
|
||||
@@ -333,6 +360,25 @@ ipt_do_table(struct sk_buff *skb,
|
||||
ip = ip_hdr(skb);
|
||||
indev = in ? in->name : nulldevname;
|
||||
outdev = out ? out->name : nulldevname;
|
||||
@ -60,7 +60,7 @@
|
||||
/* We handle fragments by dealing with the first fragment as
|
||||
* if it was a normal packet. All other fragments are treated
|
||||
* normally, except that they will NEVER match rules that ask
|
||||
@@ -348,18 +394,6 @@ ipt_do_table(struct sk_buff *skb,
|
||||
@@ -347,18 +393,6 @@ ipt_do_table(struct sk_buff *skb,
|
||||
acpar.family = NFPROTO_IPV4;
|
||||
acpar.hooknum = hook;
|
||||
|
||||
|
@ -10,7 +10,7 @@
|
||||
/* "Be conservative in what you do,
|
||||
be liberal in what you accept from others."
|
||||
If it's non-zero, we mark only out of window RST segments as INVALID. */
|
||||
@@ -524,6 +527,9 @@ static bool tcp_in_window(const struct n
|
||||
@@ -526,6 +529,9 @@ static bool tcp_in_window(const struct n
|
||||
s16 receiver_offset;
|
||||
bool res;
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
/*
|
||||
* Get the required data from the packet.
|
||||
*/
|
||||
@@ -1321,6 +1327,13 @@ static struct ctl_table tcp_sysctl_table
|
||||
@@ -1425,6 +1431,13 @@ static struct ctl_table tcp_sysctl_table
|
||||
.proc_handler = proc_dointvec,
|
||||
},
|
||||
{
|
||||
@ -32,5 +32,5 @@
|
||||
+ },
|
||||
+ {
|
||||
.procname = "nf_conntrack_tcp_be_liberal",
|
||||
.data = &nf_ct_tcp_be_liberal,
|
||||
.maxlen = sizeof(unsigned int),
|
||||
.mode = 0644,
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/pkt_sched.h
|
||||
+++ b/include/linux/pkt_sched.h
|
||||
@@ -193,6 +193,33 @@ struct tc_sfq_xstats {
|
||||
@@ -214,6 +214,33 @@ struct tc_sfq_xstats {
|
||||
__s32 allot;
|
||||
};
|
||||
|
||||
@ -114,7 +114,6 @@
|
||||
+
|
||||
+#include <linux/module.h>
|
||||
+#include <asm/uaccess.h>
|
||||
+#include <asm/system.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/types.h>
|
||||
+#include <linux/kernel.h>
|
||||
@ -751,7 +750,8 @@
|
||||
+ opt.flows = q->depth;
|
||||
+ opt.hash_kind = q->hash_kind;
|
||||
+
|
||||
+ NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
|
||||
+ if (nla_put(skb, TCA_OPTIONS, sizeof(opt), &opt))
|
||||
+ goto nla_put_failure;
|
||||
+
|
||||
+ return skb->len;
|
||||
+
|
||||
|
@ -140,7 +140,7 @@
|
||||
+module_exit(connmark_cleanup_module);
|
||||
--- a/net/sched/Kconfig
|
||||
+++ b/net/sched/Kconfig
|
||||
@@ -624,6 +624,19 @@ config NET_ACT_CSUM
|
||||
@@ -670,6 +670,19 @@ config NET_ACT_CSUM
|
||||
To compile this code as a module, choose M here: the
|
||||
module will be called act_csum.
|
||||
|
||||
|
@ -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
|
||||
@@ -296,6 +296,7 @@ struct packet_sock {
|
||||
@@ -295,6 +295,7 @@ struct packet_sock {
|
||||
unsigned int tp_loss:1;
|
||||
unsigned int tp_tstamp;
|
||||
struct packet_type prot_hook ____cacheline_aligned_in_smp;
|
||||
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
};
|
||||
|
||||
#define PACKET_FANOUT_MAX 256
|
||||
@@ -1383,6 +1384,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1384,6 +1385,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
{
|
||||
struct sock *sk;
|
||||
struct sockaddr_pkt *spkt;
|
||||
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
/*
|
||||
* When we registered the protocol we saved the socket in the data
|
||||
@@ -1390,6 +1392,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1391,6 +1393,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
*/
|
||||
|
||||
sk = pt->af_packet_priv;
|
||||
@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
/*
|
||||
* Yank back the headers [hope the device set this
|
||||
@@ -1402,7 +1405,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
@@ -1403,7 +1406,7 @@ static int packet_rcv_spkt(struct sk_buf
|
||||
* so that this procedure is noop.
|
||||
*/
|
||||
|
||||
@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
goto out;
|
||||
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
@@ -1596,12 +1599,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
@@ -1609,12 +1612,12 @@ static int packet_rcv(struct sk_buff *sk
|
||||
int skb_len = skb->len;
|
||||
unsigned int snaplen, res;
|
||||
|
||||
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -1720,12 +1723,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
@@ -1733,12 +1736,12 @@ static int tpacket_rcv(struct sk_buff *s
|
||||
struct timespec ts;
|
||||
struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb);
|
||||
|
||||
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||
goto drop;
|
||||
|
||||
@@ -2595,6 +2598,7 @@ static int packet_create(struct net *net
|
||||
@@ -2619,6 +2622,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;
|
||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3192,6 +3196,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3216,6 +3220,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
|
||||
return fanout_add(sk, val & 0xffff, val >> 16);
|
||||
}
|
||||
@ -116,9 +116,9 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3262,6 +3276,13 @@ static int packet_getsockopt(struct sock
|
||||
|
||||
data = &val;
|
||||
@@ -3270,6 +3284,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
+ case PACKET_RECV_TYPE:
|
||||
+ if (len > sizeof(unsigned int))
|
||||
@ -128,5 +128,5 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
+ data = &val;
|
||||
+ break;
|
||||
case PACKET_VERSION:
|
||||
if (len > sizeof(int))
|
||||
len = sizeof(int);
|
||||
val = po->tp_version;
|
||||
break;
|
||||
|
@ -33,7 +33,7 @@
|
||||
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
|
||||
static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
|
||||
{
|
||||
@@ -181,6 +197,7 @@ static struct brport_attribute *brport_a
|
||||
@@ -181,6 +197,7 @@ static const struct brport_attribute *br
|
||||
&brport_attr_hold_timer,
|
||||
&brport_attr_flush,
|
||||
&brport_attr_hairpin_mode,
|
||||
@ -55,7 +55,7 @@
|
||||
skb = NULL;
|
||||
--- a/net/bridge/br_forward.c
|
||||
+++ b/net/bridge/br_forward.c
|
||||
@@ -109,7 +109,7 @@ void br_deliver(const struct net_bridge_
|
||||
@@ -110,7 +110,7 @@ void br_deliver(const struct net_bridge_
|
||||
/* called with rcu_read_lock */
|
||||
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
|
||||
{
|
||||
@ -64,7 +64,7 @@
|
||||
if (skb0)
|
||||
deliver_clone(to, skb, __br_forward);
|
||||
else
|
||||
@@ -164,7 +164,8 @@ out:
|
||||
@@ -165,7 +165,8 @@ out:
|
||||
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
||||
struct sk_buff *skb0,
|
||||
void (*__packet_hook)(const struct net_bridge_port *p,
|
||||
@ -74,7 +74,7 @@
|
||||
{
|
||||
struct net_bridge_port *p;
|
||||
struct net_bridge_port *prev;
|
||||
@@ -172,6 +173,9 @@ static void br_flood(struct net_bridge *
|
||||
@@ -173,6 +174,9 @@ static void br_flood(struct net_bridge *
|
||||
prev = NULL;
|
||||
|
||||
list_for_each_entry_rcu(p, &br->port_list, list) {
|
||||
@ -84,7 +84,7 @@
|
||||
prev = maybe_deliver(prev, p, skb, __packet_hook);
|
||||
if (IS_ERR(prev))
|
||||
goto out;
|
||||
@@ -195,14 +199,14 @@ out:
|
||||
@@ -196,14 +200,14 @@ out:
|
||||
/* called with rcu_read_lock */
|
||||
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb)
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/net/addrconf.h
|
||||
+++ b/include/net/addrconf.h
|
||||
@@ -91,6 +91,12 @@ extern void addrconf_join_solict(struc
|
||||
@@ -92,6 +92,12 @@ extern void addrconf_join_solict(struc
|
||||
extern void addrconf_leave_solict(struct inet6_dev *idev,
|
||||
const struct in6_addr *addr);
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
+ struct in6_addr *saddr);
|
||||
+
|
||||
static inline unsigned long addrconf_timeout_fixup(u32 timeout,
|
||||
unsigned unit)
|
||||
unsigned int unit)
|
||||
{
|
||||
--- a/net/bridge/Kconfig
|
||||
+++ b/net/bridge/Kconfig
|
||||
@ -32,7 +32,7 @@
|
||||
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
|
||||
--- a/net/ipv6/addrconf.c
|
||||
+++ b/net/ipv6/addrconf.c
|
||||
@@ -1103,7 +1103,7 @@ out:
|
||||
@@ -1099,7 +1099,7 @@ out:
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -41,7 +41,7 @@
|
||||
const struct in6_addr *daddr, unsigned int prefs,
|
||||
struct in6_addr *saddr)
|
||||
{
|
||||
@@ -1228,7 +1228,6 @@ try_nextdev:
|
||||
@@ -1224,7 +1224,6 @@ try_nextdev:
|
||||
in6_ifa_put(hiscore->ifa);
|
||||
return 0;
|
||||
}
|
||||
@ -49,7 +49,7 @@
|
||||
|
||||
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
|
||||
unsigned char banned_flags)
|
||||
@@ -4840,6 +4839,9 @@ int __init addrconf_init(void)
|
||||
@@ -4808,6 +4807,9 @@ int __init addrconf_init(void)
|
||||
|
||||
ipv6_addr_label_rtnl_register();
|
||||
|
||||
@ -59,7 +59,7 @@
|
||||
return 0;
|
||||
errout:
|
||||
rtnl_af_unregister(&inet6_ops);
|
||||
@@ -4858,6 +4860,9 @@ void addrconf_cleanup(void)
|
||||
@@ -4826,6 +4828,9 @@ void addrconf_cleanup(void)
|
||||
struct net_device *dev;
|
||||
int i;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/bridge/br_forward.c
|
||||
+++ b/net/bridge/br_forward.c
|
||||
@@ -55,7 +55,7 @@ int br_dev_queue_push_xmit(struct sk_buf
|
||||
@@ -56,7 +56,7 @@ int br_dev_queue_push_xmit(struct sk_buf
|
||||
|
||||
int br_forward_finish(struct sk_buff *skb)
|
||||
{
|
||||
@ -9,7 +9,7 @@
|
||||
br_dev_queue_push_xmit);
|
||||
|
||||
}
|
||||
@@ -74,7 +74,7 @@ static void __br_deliver(const struct ne
|
||||
@@ -75,7 +75,7 @@ static void __br_deliver(const struct ne
|
||||
return;
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
br_forward_finish);
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ static void __br_forward(const struct ne
|
||||
@@ -92,7 +92,7 @@ static void __br_forward(const struct ne
|
||||
skb->dev = to->dev;
|
||||
skb_forward_csum(skb);
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
return RX_HANDLER_CONSUMED; /* consumed by filter */
|
||||
} else {
|
||||
@@ -224,7 +224,7 @@ forward:
|
||||
if (!compare_ether_addr(p->br->dev->dev_addr, dest))
|
||||
if (ether_addr_equal(p->br->dev->dev_addr, dest))
|
||||
skb->pkt_type = PACKET_HOST;
|
||||
|
||||
- NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
|
||||
@ -58,7 +58,7 @@
|
||||
default:
|
||||
--- a/net/bridge/br_multicast.c
|
||||
+++ b/net/bridge/br_multicast.c
|
||||
@@ -753,7 +753,7 @@ static void __br_multicast_send_query(st
|
||||
@@ -770,7 +770,7 @@ static void __br_multicast_send_query(st
|
||||
if (port) {
|
||||
__skb_push(skb, sizeof(struct ethhdr));
|
||||
skb->dev = port->dev;
|
||||
@ -69,7 +69,7 @@
|
||||
netif_rx(skb);
|
||||
--- a/net/bridge/br_netfilter.c
|
||||
+++ b/net/bridge/br_netfilter.c
|
||||
@@ -71,6 +71,15 @@ static int brnf_filter_pppoe_tagged __re
|
||||
@@ -73,6 +73,15 @@ static int brnf_pass_vlan_indev __read_m
|
||||
#define IS_ARP(skb) \
|
||||
(!vlan_tx_tag_present(skb) && skb->protocol == htons(ETH_P_ARP))
|
||||
|
||||
@ -87,7 +87,7 @@
|
||||
if (vlan_tx_tag_present(skb))
|
||||
--- a/net/bridge/br_private.h
|
||||
+++ b/net/bridge/br_private.h
|
||||
@@ -486,15 +486,29 @@ static inline bool br_multicast_is_route
|
||||
@@ -497,15 +497,29 @@ static inline bool br_multicast_is_route
|
||||
|
||||
/* br_netfilter.c */
|
||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/ppp/pppoe.c
|
||||
+++ b/drivers/net/ppp/pppoe.c
|
||||
@@ -856,7 +856,7 @@ static int pppoe_sendmsg(struct kiocb *i
|
||||
@@ -850,7 +850,7 @@ static int pppoe_sendmsg(struct kiocb *i
|
||||
goto end;
|
||||
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
0, GFP_KERNEL);
|
||||
if (!skb) {
|
||||
error = -ENOMEM;
|
||||
@@ -864,7 +864,7 @@ static int pppoe_sendmsg(struct kiocb *i
|
||||
@@ -858,7 +858,7 @@ static int pppoe_sendmsg(struct kiocb *i
|
||||
}
|
||||
|
||||
/* Reserve space for headers. */
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -145,7 +145,7 @@ static inline bool dev_xmit_complete(int
|
||||
@@ -147,7 +147,7 @@ static inline bool dev_xmit_complete(int
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_WLAN) || IS_ENABLED(CONFIG_AX25)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/netlink/af_netlink.c
|
||||
+++ b/net/netlink/af_netlink.c
|
||||
@@ -854,25 +854,7 @@ void netlink_detachskb(struct sock *sk,
|
||||
@@ -880,25 +880,7 @@ void netlink_detachskb(struct sock *sk,
|
||||
|
||||
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -1558,7 +1558,7 @@ static inline int pskb_network_may_pull(
|
||||
@@ -1626,7 +1626,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
|
||||
|
@ -16,7 +16,7 @@
|
||||
+
|
||||
comment "MII PHY device drivers"
|
||||
|
||||
config MARVELL_PHY
|
||||
config AMD_PHY
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -3,6 +3,7 @@
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -299,6 +299,50 @@ int phy_ethtool_gset(struct phy_device *
|
||||
@@ -301,6 +301,50 @@ int phy_ethtool_gset(struct phy_device *
|
||||
}
|
||||
EXPORT_SYMBOL(phy_ethtool_gset);
|
||||
|
||||
@ -51,7 +51,7 @@
|
||||
/**
|
||||
* phy_mii_ioctl - generic PHY MII ioctl interface
|
||||
* @phydev: the phy_device struct
|
||||
@@ -474,7 +518,7 @@ static void phy_force_reduction(struct p
|
||||
@@ -476,7 +520,7 @@ static void phy_force_reduction(struct p
|
||||
int idx;
|
||||
|
||||
idx = phy_find_setting(phydev->speed, phydev->duplex);
|
||||
@ -62,7 +62,7 @@
|
||||
idx = phy_find_valid(idx, phydev->supported);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -515,6 +515,7 @@ void phy_start_machine(struct phy_device
|
||||
@@ -542,6 +542,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);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -393,9 +393,18 @@ struct phy_driver {
|
||||
@@ -408,9 +408,18 @@ struct phy_driver {
|
||||
*/
|
||||
int (*config_aneg)(struct phy_device *phydev);
|
||||
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
--- a/drivers/net/phy/phy_device.c
|
||||
+++ b/drivers/net/phy/phy_device.c
|
||||
@@ -705,6 +705,9 @@ int genphy_update_link(struct phy_device
|
||||
@@ -796,6 +796,9 @@ int genphy_update_link(struct phy_device
|
||||
{
|
||||
int status;
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -106,6 +106,9 @@ static inline int phy_aneg_done(struct p
|
||||
@@ -108,6 +108,9 @@ static inline int phy_aneg_done(struct p
|
||||
{
|
||||
int retval;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
/**
|
||||
* mdiobus_alloc_size - allocate a mii_bus structure
|
||||
* @size: extra amount of memory to allocate for private storage.
|
||||
@@ -228,15 +230,33 @@
|
||||
@@ -228,15 +230,33 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_free);
|
||||
|
||||
@ -45,7 +45,7 @@
|
||||
phy_device_free(phydev);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -543,4 +543,22 @@ int __init mdio_bus_init(void);
|
||||
@@ -575,4 +575,22 @@ int __init mdio_bus_init(void);
|
||||
void mdio_bus_exit(void);
|
||||
|
||||
extern struct bus_type mdio_bus_type;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -106,6 +106,13 @@ config MICREL_PHY
|
||||
@@ -116,6 +116,13 @@ config MICREL_PHY
|
||||
---help---
|
||||
Supports the KSZ9021, VSC8201, KS8001 PHYs.
|
||||
|
||||
@ -16,9 +16,9 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -16,6 +16,7 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
||||
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
||||
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
||||
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
|
||||
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
||||
+obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/netdevice.h
|
||||
+++ b/include/linux/netdevice.h
|
||||
@@ -1078,6 +1078,11 @@ struct net_device {
|
||||
@@ -1102,6 +1102,11 @@ struct net_device {
|
||||
const struct net_device_ops *netdev_ops;
|
||||
const struct ethtool_ops *ethtool_ops;
|
||||
|
||||
@ -12,7 +12,7 @@
|
||||
/* Hardware header description */
|
||||
const struct header_ops *header_ops;
|
||||
|
||||
@@ -1134,6 +1139,9 @@ struct net_device {
|
||||
@@ -1158,6 +1163,9 @@ struct net_device {
|
||||
void *ax25_ptr; /* AX.25 specific data */
|
||||
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
|
||||
assign before registering */
|
||||
@ -34,21 +34,21 @@
|
||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||
--- a/include/linux/skbuff.h
|
||||
+++ b/include/linux/skbuff.h
|
||||
@@ -1661,6 +1661,10 @@ extern struct sk_buff *dev_alloc_skb(uns
|
||||
extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
|
||||
unsigned int length, gfp_t gfp_mask);
|
||||
@@ -1656,6 +1656,10 @@ static inline int pskb_trim(struct sk_bu
|
||||
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||
}
|
||||
|
||||
+extern struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
||||
+ unsigned int length, gfp_t gfp);
|
||||
+
|
||||
+
|
||||
/**
|
||||
* netdev_alloc_skb - allocate an skbuff for rx on a specific device
|
||||
* @dev: network device to receive on
|
||||
@@ -1680,16 +1684,6 @@ static inline struct sk_buff *netdev_all
|
||||
return __netdev_alloc_skb(dev, length, GFP_ATOMIC);
|
||||
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||
* @skb: buffer to alter
|
||||
@@ -1758,16 +1762,6 @@ static inline struct sk_buff *dev_alloc_
|
||||
}
|
||||
|
||||
|
||||
-static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
||||
- unsigned int length, gfp_t gfp)
|
||||
-{
|
||||
@ -79,7 +79,7 @@
|
||||
help
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -2267,9 +2267,19 @@ int dev_hard_start_xmit(struct sk_buff *
|
||||
@@ -2243,9 +2243,19 @@ int dev_hard_start_xmit(struct sk_buff *
|
||||
}
|
||||
}
|
||||
|
||||
@ -102,7 +102,7 @@
|
||||
if (rc == NETDEV_TX_OK)
|
||||
txq_trans_update(txq);
|
||||
return rc;
|
||||
@@ -2289,9 +2299,19 @@ gso:
|
||||
@@ -2265,9 +2275,19 @@ gso:
|
||||
if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
|
||||
skb_dst_drop(nskb);
|
||||
|
||||
@ -127,7 +127,7 @@
|
||||
goto out_kfree_gso_skb;
|
||||
--- a/net/core/skbuff.c
|
||||
+++ b/net/core/skbuff.c
|
||||
@@ -58,6 +58,7 @@
|
||||
@@ -60,6 +60,7 @@
|
||||
#include <linux/scatterlist.h>
|
||||
#include <linux/errqueue.h>
|
||||
#include <linux/prefetch.h>
|
||||
@ -135,7 +135,7 @@
|
||||
|
||||
#include <net/protocol.h>
|
||||
#include <net/dst.h>
|
||||
@@ -320,6 +321,22 @@ struct sk_buff *__netdev_alloc_skb(struc
|
||||
@@ -441,6 +442,22 @@ struct sk_buff *__netdev_alloc_skb(struc
|
||||
}
|
||||
EXPORT_SYMBOL(__netdev_alloc_skb);
|
||||
|
||||
@ -156,11 +156,11 @@
|
||||
+EXPORT_SYMBOL(__netdev_alloc_skb_ip_align);
|
||||
+
|
||||
void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
|
||||
int size)
|
||||
int size, unsigned int truesize)
|
||||
{
|
||||
--- a/net/ethernet/eth.c
|
||||
+++ b/net/ethernet/eth.c
|
||||
@@ -160,6 +160,12 @@ __be16 eth_type_trans(struct sk_buff *sk
|
||||
@@ -159,6 +159,12 @@ __be16 eth_type_trans(struct sk_buff *sk
|
||||
struct ethhdr *eth;
|
||||
|
||||
skb->dev = dev;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -113,6 +113,10 @@ config ADM6996_PHY
|
||||
@@ -123,6 +123,10 @@ config ADM6996_PHY
|
||||
Currently supports the ADM6996FC and ADM6996M switches.
|
||||
Support for FC is very limited.
|
||||
|
||||
@ -13,8 +13,8 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
||||
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
|
||||
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
||||
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||
+obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -117,6 +117,10 @@ config MVSWITCH_PHY
|
||||
@@ -127,6 +127,10 @@ config MVSWITCH_PHY
|
||||
tristate "Driver for Marvell 88E6060 switches"
|
||||
select ETHERNET_PACKET_MANGLE
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||
@@ -19,6 +19,7 @@ obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
|
||||
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
||||
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -121,6 +121,11 @@ config IP17XX_PHY
|
||||
@@ -131,6 +131,11 @@ config IP17XX_PHY
|
||||
tristate "Driver for IC+ IP17xx switches"
|
||||
select SWCONFIG
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||
@@ -21,6 +21,7 @@ obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -126,6 +126,10 @@ config AR8216_PHY
|
||||
@@ -136,6 +136,10 @@ config AR8216_PHY
|
||||
select ETHERNET_PACKET_MANGLE
|
||||
select SWCONFIG
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -21,6 +21,7 @@ obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||
@@ -22,6 +22,7 @@ obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -168,6 +168,30 @@ config MDIO_OCTEON
|
||||
|
||||
If in doubt, say Y.
|
||||
@@ -197,6 +197,30 @@ config MDIO_BUS_MUX_GPIO
|
||||
several child MDIO busses to a parent bus. Child bus
|
||||
selection is under the control of GPIO lines.
|
||||
|
||||
+config RTL8366_SMI
|
||||
+ tristate "Driver for the RTL8366 SMI interface"
|
||||
@ -33,7 +33,7 @@
|
||||
config MICREL_KS8995MA
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -22,6 +22,9 @@ obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
||||
@@ -23,6 +23,9 @@ obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
||||
obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -190,6 +190,10 @@ config RTL8366RB_PHY
|
||||
@@ -219,6 +219,10 @@ config RTL8366RB_PHY
|
||||
tristate "Driver for the Realtek RTL8366RB switch"
|
||||
select SWCONFIG
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
endif # PHYLIB
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -25,6 +25,7 @@ obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
|
||||
obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi.o
|
||||
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
||||
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -130,6 +130,11 @@ config RTL8306_PHY
|
||||
@@ -140,6 +140,11 @@ config RTL8306_PHY
|
||||
tristate "Driver for Realtek RTL8306S switches"
|
||||
select SWCONFIG
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
depends on PHYLIB=y
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -27,6 +27,7 @@ obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
||||
@@ -28,6 +28,7 @@ obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
||||
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -199,6 +199,10 @@ config RTL8367_PHY
|
||||
@@ -228,6 +228,10 @@ config RTL8367_PHY
|
||||
tristate "Driver for the Realtek RTL8367R/M switches"
|
||||
select SWCONFIG
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
endif # PHYLIB
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -26,6 +26,7 @@ obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi
|
||||
@@ -27,6 +27,7 @@ obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi
|
||||
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
||||
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/phy/Kconfig
|
||||
+++ b/drivers/net/phy/Kconfig
|
||||
@@ -206,3 +206,8 @@ endif # PHYLIB
|
||||
@@ -239,3 +239,8 @@ endif # PHYLIB
|
||||
config MICREL_KS8995MA
|
||||
tristate "Micrel KS8995MA 5-ports 10/100 managed Ethernet switch"
|
||||
depends on SPI
|
||||
@ -11,8 +11,8 @@
|
||||
+ select ETHERNET_PACKET_MANGLE
|
||||
--- a/drivers/net/phy/Makefile
|
||||
+++ b/drivers/net/phy/Makefile
|
||||
@@ -28,6 +28,7 @@ obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb
|
||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||
@@ -30,6 +30,7 @@ obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||
obj-$(CONFIG_RTL8367B_PHY) += rtl8367b.o
|
||||
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
||||
obj-$(CONFIG_MICREL_PHY) += micrel.o
|
||||
+obj-$(CONFIG_PSB6970_PHY) += psb6970.o
|
||||
|
@ -64,7 +64,7 @@
|
||||
#endif /* HOSTAP_H */
|
||||
--- a/drivers/net/wireless/hostap/hostap_hw.c
|
||||
+++ b/drivers/net/wireless/hostap/hostap_hw.c
|
||||
@@ -932,6 +932,7 @@ static int hfa384x_set_rid(struct net_de
|
||||
@@ -928,6 +928,7 @@ static int hfa384x_set_rid(struct net_de
|
||||
prism2_hw_reset(dev);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/pci/Kconfig
|
||||
+++ b/drivers/pci/Kconfig
|
||||
@@ -51,6 +51,12 @@ config XEN_PCIDEV_FRONTEND
|
||||
@@ -64,6 +64,12 @@ config XEN_PCIDEV_FRONTEND
|
||||
The PCI device frontend driver allows the kernel to import arbitrary
|
||||
PCI devices from a PCI backend to support PCI driver domains.
|
||||
|
||||
@ -15,15 +15,15 @@
|
||||
default y
|
||||
--- a/drivers/pci/quirks.c
|
||||
+++ b/drivers/pci/quirks.c
|
||||
@@ -105,6 +105,7 @@ static void __devinit quirk_mmio_always_
|
||||
}
|
||||
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, quirk_mmio_always_on);
|
||||
@@ -44,6 +44,7 @@ static void __devinit quirk_mmio_always_
|
||||
DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
|
||||
|
||||
+#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
|
||||
/* The Mellanox Tavor device gives false positive parity errors
|
||||
* Mark this device with a broken_parity_status, to allow
|
||||
* PCI scanning code to "skip" this now blacklisted device.
|
||||
@@ -1990,7 +1991,9 @@ static void __devinit fixup_rev1_53c810(
|
||||
@@ -1933,7 +1934,9 @@ static void __devinit fixup_rev1_53c810(
|
||||
}
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, fixup_rev1_53c810);
|
||||
@ -33,9 +33,9 @@
|
||||
/* Enable 1k I/O space granularity on the Intel P64H2 */
|
||||
static void __devinit quirk_p64h2_1k_io(struct pci_dev *dev)
|
||||
{
|
||||
@@ -2666,6 +2669,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
|
||||
@@ -2605,6 +2608,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083,
|
||||
quirk_msi_intx_disable_bug);
|
||||
|
||||
#endif /* CONFIG_PCI_MSI */
|
||||
+#endif /* !CONFIG_PCI_DISABLE_COMMON_QUIRKS */
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
|
||||
--- a/drivers/usb/host/pci-quirks.c
|
||||
+++ b/drivers/usb/host/pci-quirks.c
|
||||
@@ -432,6 +432,8 @@ reset_needed:
|
||||
@@ -434,6 +434,8 @@ reset_needed:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(uhci_check_and_reset_hc);
|
||||
|
||||
@ -10,29 +10,8 @@
|
||||
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
|
||||
{
|
||||
u16 cmd;
|
||||
@@ -928,3 +930,5 @@ static void __devinit quirk_usb_early_ha
|
||||
pci_disable_device(pdev);
|
||||
@@ -964,3 +966,4 @@ static void __devinit quirk_usb_early_ha
|
||||
}
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_usb_early_handoff);
|
||||
+
|
||||
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
|
||||
+#endif
|
||||
--- a/drivers/usb/host/pci-quirks.h
|
||||
+++ b/drivers/usb/host/pci-quirks.h
|
||||
@@ -8,9 +8,17 @@ int usb_amd_find_chipset_info(void);
|
||||
void usb_amd_dev_put(void);
|
||||
void usb_amd_quirk_pll_disable(void);
|
||||
void usb_amd_quirk_pll_enable(void);
|
||||
+#if !defined(CONFIG_PCI_DISABLE_COMMON_QUIRKS)
|
||||
bool usb_is_intel_switchable_xhci(struct pci_dev *pdev);
|
||||
void usb_enable_xhci_ports(struct pci_dev *xhci_pdev);
|
||||
#else
|
||||
+static inline bool usb_is_intel_switchable_xhci(struct pci_dev *pdev)
|
||||
+{
|
||||
+ return false;
|
||||
+}
|
||||
+static inline void usb_enable_xhci_ports(struct pci_dev *xhci_pdev) {}
|
||||
+#endif
|
||||
+#else
|
||||
static inline void usb_amd_quirk_pll_disable(void) {}
|
||||
static inline void usb_amd_quirk_pll_enable(void) {}
|
||||
static inline void usb_amd_dev_put(void) {}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/usb/core/usb.c
|
||||
+++ b/drivers/usb/core/usb.c
|
||||
@@ -652,6 +652,71 @@ int __usb_get_extra_descriptor(char *buf
|
||||
@@ -653,6 +653,71 @@ int __usb_get_extra_descriptor(char *buf
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor);
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
* @dev: device the buffer will be used with
|
||||
--- a/include/linux/usb.h
|
||||
+++ b/include/linux/usb.h
|
||||
@@ -531,6 +531,7 @@ extern int usb_lock_device_for_reset(str
|
||||
@@ -584,6 +584,7 @@ extern int usb_lock_device_for_reset(str
|
||||
extern int usb_reset_device(struct usb_device *dev);
|
||||
extern void usb_queue_reset_device(struct usb_interface *dev);
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -480,4 +480,8 @@ config LEDS_TRIGGER_DEFAULT_ON
|
||||
comment "iptables trigger is under Netfilter config (LED target)"
|
||||
depends on LEDS_TRIGGERS
|
||||
@@ -537,4 +537,8 @@ config LEDS_TRIGGER_TRANSIENT
|
||||
GPIO/PWM based hardware.
|
||||
If unsure, say Y.
|
||||
|
||||
+config LEDS_TRIGGER_MORSE
|
||||
+ tristate "LED Morse Trigger"
|
||||
@ -11,10 +11,10 @@
|
||||
endif # NEW_LEDS
|
||||
--- a/drivers/leds/Makefile
|
||||
+++ b/drivers/leds/Makefile
|
||||
@@ -57,3 +57,4 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) +=
|
||||
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
|
||||
@@ -63,3 +63,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
|
||||
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
|
||||
+obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
|
||||
--- a/drivers/leds/ledtrig-morse.c
|
||||
+++ b/drivers/leds/ledtrig-morse.c
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -484,4 +484,11 @@ config LEDS_TRIGGER_MORSE
|
||||
@@ -541,4 +541,11 @@ config LEDS_TRIGGER_MORSE
|
||||
tristate "LED Morse Trigger"
|
||||
depends on LEDS_TRIGGERS
|
||||
|
||||
@ -14,9 +14,9 @@
|
||||
endif # NEW_LEDS
|
||||
--- a/drivers/leds/Makefile
|
||||
+++ b/drivers/leds/Makefile
|
||||
@@ -58,3 +58,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
|
||||
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
|
||||
@@ -64,3 +64,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
|
||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
|
||||
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
||||
--- a/drivers/leds/ledtrig-netdev.c
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/leds/Kconfig
|
||||
+++ b/drivers/leds/Kconfig
|
||||
@@ -491,4 +491,11 @@ config LEDS_TRIGGER_NETDEV
|
||||
@@ -548,4 +548,11 @@ config LEDS_TRIGGER_NETDEV
|
||||
This allows LEDs to be controlled by network device activity.
|
||||
If unsure, say Y.
|
||||
|
||||
@ -14,8 +14,8 @@
|
||||
endif # NEW_LEDS
|
||||
--- a/drivers/leds/Makefile
|
||||
+++ b/drivers/leds/Makefile
|
||||
@@ -59,3 +59,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
|
||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
|
||||
@@ -65,3 +65,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) +=
|
||||
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
|
||||
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
||||
+obj-$(CONFIG_LEDS_TRIGGER_USBDEV) += ledtrig-usbdev.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/rtc/Kconfig
|
||||
+++ b/drivers/rtc/Kconfig
|
||||
@@ -719,6 +719,15 @@ config RTC_DRV_NUC900
|
||||
@@ -716,6 +716,15 @@ config RTC_DRV_NUC900
|
||||
If you say yes here you get support for the RTC subsystem of the
|
||||
NUC910/NUC920 used in embedded systems.
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
config RTC_DRV_DAVINCI
|
||||
--- a/drivers/rtc/Makefile
|
||||
+++ b/drivers/rtc/Makefile
|
||||
@@ -86,6 +86,7 @@ obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c
|
||||
@@ -89,6 +89,7 @@ obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c
|
||||
obj-$(CONFIG_RTC_DRV_RS5C313) += rtc-rs5c313.o
|
||||
obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o
|
||||
obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/rtc/Kconfig
|
||||
+++ b/drivers/rtc/Kconfig
|
||||
@@ -379,6 +379,15 @@ config RTC_DRV_RV3029C2
|
||||
@@ -389,6 +389,15 @@ config RTC_DRV_RV3029C2
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called rtc-rv3029c2.
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
comment "SPI RTC drivers"
|
||||
--- a/drivers/rtc/Makefile
|
||||
+++ b/drivers/rtc/Makefile
|
||||
@@ -79,6 +79,7 @@ obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030
|
||||
@@ -82,6 +82,7 @@ obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030
|
||||
obj-$(CONFIG_RTC_DRV_PL031) += rtc-pl031.o
|
||||
obj-$(CONFIG_RTC_DRV_PM8XXX) += rtc-pm8xxx.o
|
||||
obj-$(CONFIG_RTC_DRV_PS3) += rtc-ps3.o
|
||||
|
@ -345,7 +345,7 @@ Please use the new mainline SPI-GPIO driver, as of 2.6.29.
|
||||
+MODULE_LICENSE("GPL v2");
|
||||
--- a/drivers/spi/Kconfig
|
||||
+++ b/drivers/spi/Kconfig
|
||||
@@ -154,6 +154,15 @@ config SPI_GPIO
|
||||
@@ -169,6 +169,15 @@ config SPI_GPIO
|
||||
GPIO operations, you should be able to leverage that for better
|
||||
speed with a custom version of this driver; see the source code.
|
||||
|
||||
@ -363,7 +363,7 @@ Please use the new mainline SPI-GPIO driver, as of 2.6.29.
|
||||
depends on ARCH_MXC
|
||||
--- a/drivers/spi/Makefile
|
||||
+++ b/drivers/spi/Makefile
|
||||
@@ -29,6 +29,7 @@ obj-$(CONFIG_SPI_FSL_LIB) += spi-fsl-li
|
||||
@@ -31,6 +31,7 @@ obj-$(CONFIG_SPI_FSL_LIB) += spi-fsl-li
|
||||
obj-$(CONFIG_SPI_FSL_ESPI) += spi-fsl-espi.o
|
||||
obj-$(CONFIG_SPI_FSL_SPI) += spi-fsl-spi.o
|
||||
obj-$(CONFIG_SPI_GPIO) += spi-gpio.o
|
||||
|
@ -612,7 +612,7 @@
|
||||
+module_exit(gpiommc_modexit);
|
||||
--- a/drivers/mmc/host/Kconfig
|
||||
+++ b/drivers/mmc/host/Kconfig
|
||||
@@ -474,6 +474,31 @@ config MMC_SDHI
|
||||
@@ -467,6 +467,31 @@ config MMC_SDHI
|
||||
This provides support for the SDHI SD/SDIO controller found in
|
||||
SuperH and ARM SH-Mobile SoCs
|
||||
|
||||
@ -646,14 +646,14 @@
|
||||
depends on PCI
|
||||
--- a/drivers/mmc/host/Makefile
|
||||
+++ b/drivers/mmc/host/Makefile
|
||||
@@ -37,6 +37,7 @@ tmio_mmc_core-$(subst m,y,$(CONFIG_MMC_S
|
||||
@@ -36,6 +36,7 @@ tmio_mmc_core-$(subst m,y,$(CONFIG_MMC_S
|
||||
obj-$(CONFIG_MMC_SDHI) += sh_mobile_sdhi.o
|
||||
obj-$(CONFIG_MMC_CB710) += cb710-mmc.o
|
||||
obj-$(CONFIG_MMC_VIA_SDMMC) += via-sdmmc.o
|
||||
+obj-$(CONFIG_GPIOMMC) += gpiommc.o
|
||||
obj-$(CONFIG_SDH_BFIN) += bfin_sdh.o
|
||||
obj-$(CONFIG_MMC_DW) += dw_mmc.o
|
||||
obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
|
||||
obj-$(CONFIG_MMC_DW_PLTFM) += dw_mmc-pltfm.o
|
||||
--- /dev/null
|
||||
+++ b/include/linux/mmc/gpiommc.h
|
||||
@@ -0,0 +1,71 @@
|
||||
@ -830,7 +830,7 @@
|
||||
+be done automatically.
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -3045,6 +3045,11 @@ L: linuxppc-dev@lists.ozlabs.org
|
||||
@@ -3188,6 +3188,11 @@ L: linuxppc-dev@lists.ozlabs.org
|
||||
S: Odd Fixes
|
||||
F: drivers/tty/hvc/
|
||||
|
||||
@ -841,4 +841,4 @@
|
||||
+
|
||||
HARDWARE MONITORING
|
||||
M: Jean Delvare <khali@linux-fr.org>
|
||||
M: Guenter Roeck <guenter.roeck@ericsson.com>
|
||||
M: Guenter Roeck <linux@roeck-us.net>
|
||||
|
@ -11,11 +11,11 @@
|
||||
source "drivers/power/Kconfig"
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -8,6 +8,7 @@
|
||||
# GPIO must come after pinctrl as gpios may need to mux pins etc
|
||||
obj-y += pinctrl/
|
||||
@@ -10,6 +10,7 @@ obj-y += pinctrl/
|
||||
obj-y += gpio/
|
||||
+obj-$(CONFIG_GENERIC_PWM) += pwm/
|
||||
obj-y += pwm/
|
||||
obj-$(CONFIG_PCI) += pci/
|
||||
+obj-$(CONFIG_GENERIC_PWM) += pwm/
|
||||
obj-$(CONFIG_PARISC) += parisc/
|
||||
obj-$(CONFIG_RAPIDIO) += rapidio/
|
||||
obj-y += video/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/hwmon/Kconfig
|
||||
+++ b/drivers/hwmon/Kconfig
|
||||
@@ -423,6 +423,15 @@ config SENSORS_GL520SM
|
||||
@@ -434,6 +434,15 @@ config SENSORS_GL520SM
|
||||
This driver can also be built as a module. If so, the module
|
||||
will be called gl520sm.
|
||||
|
||||
@ -15,10 +15,10 @@
|
||||
+
|
||||
config SENSORS_GPIO_FAN
|
||||
tristate "GPIO fan"
|
||||
depends on GENERIC_GPIO
|
||||
depends on GPIOLIB
|
||||
--- a/drivers/hwmon/Makefile
|
||||
+++ b/drivers/hwmon/Makefile
|
||||
@@ -125,6 +125,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l7
|
||||
@@ -129,6 +129,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l7
|
||||
obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o
|
||||
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
|
||||
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/linux/slab.h
|
||||
+++ b/include/linux/slab.h
|
||||
@@ -127,8 +127,8 @@ unsigned int kmem_cache_size(struct kmem
|
||||
@@ -151,8 +151,8 @@ unsigned int kmem_cache_size(struct kmem
|
||||
* to do various tricks to work around compiler limitations in order to
|
||||
* ensure proper constant folding.
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/lib/kobject_uevent.c
|
||||
+++ b/lib/kobject_uevent.c
|
||||
@@ -50,6 +50,18 @@ static const char *kobject_actions[] = {
|
||||
@@ -51,6 +51,18 @@ static const char *kobject_actions[] = {
|
||||
[KOBJ_OFFLINE] = "offline",
|
||||
};
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
#endif /* _KOBJECT_H_ */
|
||||
--- a/lib/kobject_uevent.c
|
||||
+++ b/lib/kobject_uevent.c
|
||||
@@ -381,6 +381,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
@@ -382,6 +382,43 @@ int add_uevent_var(struct kobj_uevent_en
|
||||
EXPORT_SYMBOL_GPL(add_uevent_var);
|
||||
|
||||
#if defined(CONFIG_NET)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -816,7 +816,7 @@ static int __init kernel_init(void * unu
|
||||
@@ -868,7 +868,7 @@ static int __init kernel_init(void * unu
|
||||
|
||||
/* Open the /dev/console on the rootfs, this should never fail */
|
||||
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/init/main.c
|
||||
+++ b/init/main.c
|
||||
@@ -774,10 +774,7 @@ static noinline int init_post(void)
|
||||
@@ -826,10 +826,7 @@ static noinline int init_post(void)
|
||||
printk(KERN_WARNING "Failed to execute %s. Attempting "
|
||||
"defaults...\n", execute_command);
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
+#endif
|
||||
--- a/init/Kconfig
|
||||
+++ b/init/Kconfig
|
||||
@@ -926,6 +926,10 @@ config RELAY
|
||||
@@ -1105,6 +1105,10 @@ config RELAY
|
||||
|
||||
If unsure, say N.
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
depends on BROKEN || !FRV
|
||||
--- a/kernel/Makefile
|
||||
+++ b/kernel/Makefile
|
||||
@@ -107,6 +107,7 @@ obj-$(CONFIG_USER_RETURN_NOTIFIER) += us
|
||||
@@ -110,6 +110,7 @@ obj-$(CONFIG_USER_RETURN_NOTIFIER) += us
|
||||
obj-$(CONFIG_PADATA) += padata.o
|
||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
|
||||
@ -274,7 +274,7 @@
|
||||
|
||||
static struct memblock_region memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock;
|
||||
static struct memblock_region memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock;
|
||||
@@ -305,6 +306,8 @@ static void __init_memblock memblock_ins
|
||||
@@ -341,6 +342,8 @@ static void __init_memblock memblock_ins
|
||||
memblock_set_region_node(rgn, nid);
|
||||
type->cnt++;
|
||||
type->total_size += size;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/crypto/Kconfig
|
||||
+++ b/crypto/Kconfig
|
||||
@@ -968,3 +968,6 @@ config CRYPTO_USER_API_SKCIPHER
|
||||
@@ -1052,3 +1052,6 @@ config CRYPTO_USER_API_SKCIPHER
|
||||
source "drivers/crypto/Kconfig"
|
||||
|
||||
endif # if CRYPTO
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/drivers/char/random.c
|
||||
+++ b/drivers/char/random.c
|
||||
@@ -131,6 +131,9 @@
|
||||
* void add_interrupt_randomness(int irq, int irq_flags);
|
||||
* void add_disk_randomness(struct gendisk *disk);
|
||||
@@ -139,6 +139,9 @@
|
||||
* that might otherwise be identical and have very little entropy
|
||||
* available to them (particularly common in the embedded world).
|
||||
*
|
||||
+ * void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
|
||||
+ * int random_input_wait(void);
|
||||
@ -24,7 +24,7 @@
|
||||
* All of these routines try to estimate how many bits of randomness a
|
||||
* particular randomness source. They do this by keeping track of the
|
||||
* first and second order deltas of the event timings.
|
||||
@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk
|
||||
@@ -799,6 +809,63 @@ void add_disk_randomness(struct gendisk
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
* Entropy extraction routines
|
||||
--- a/fs/fcntl.c
|
||||
+++ b/fs/fcntl.c
|
||||
@@ -142,6 +142,7 @@ SYSCALL_DEFINE1(dup, unsigned int, filde
|
||||
@@ -143,6 +143,7 @@ SYSCALL_DEFINE1(dup, unsigned int, filde
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/mm/shmem.c
|
||||
+++ b/mm/shmem.c
|
||||
@@ -2490,6 +2490,16 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);
|
||||
@@ -2902,6 +2902,16 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);
|
||||
|
||||
/* common code */
|
||||
|
||||
@ -17,7 +17,7 @@
|
||||
/**
|
||||
* shmem_file_setup - get an unlinked file living in tmpfs
|
||||
* @name: name for dentry (to be seen in /proc/<pid>/maps
|
||||
@@ -2567,11 +2577,8 @@ int shmem_zero_setup(struct vm_area_stru
|
||||
@@ -2979,11 +2989,8 @@ int shmem_zero_setup(struct vm_area_stru
|
||||
if (IS_ERR(file))
|
||||
return PTR_ERR(file);
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
|
||||
--- a/fs/file.c
|
||||
+++ b/fs/file.c
|
||||
@@ -268,6 +268,7 @@ int expand_files(struct files_struct *fi
|
||||
@@ -269,6 +269,7 @@ int expand_files(struct files_struct *fi
|
||||
/* All good, so we try */
|
||||
return expand_fdtable(files, nr);
|
||||
}
|
||||
@ -43,7 +43,7 @@
|
||||
{
|
||||
--- a/kernel/exit.c
|
||||
+++ b/kernel/exit.c
|
||||
@@ -500,6 +500,7 @@ struct files_struct *get_files_struct(st
|
||||
@@ -513,6 +513,7 @@ struct files_struct *get_files_struct(st
|
||||
|
||||
return files;
|
||||
}
|
||||
@ -51,7 +51,7 @@
|
||||
|
||||
void put_files_struct(struct files_struct *files)
|
||||
{
|
||||
@@ -521,6 +522,7 @@ void put_files_struct(struct files_struc
|
||||
@@ -534,6 +535,7 @@ void put_files_struct(struct files_struc
|
||||
rcu_read_unlock();
|
||||
}
|
||||
}
|
||||
@ -61,7 +61,7 @@
|
||||
{
|
||||
--- a/kernel/sched/core.c
|
||||
+++ b/kernel/sched/core.c
|
||||
@@ -3854,6 +3854,7 @@ int can_nice(const struct task_struct *p
|
||||
@@ -4106,6 +4106,7 @@ int can_nice(const struct task_struct *p
|
||||
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
||||
capable(CAP_SYS_NICE));
|
||||
}
|
||||
@ -71,25 +71,17 @@
|
||||
|
||||
--- a/mm/memory.c
|
||||
+++ b/mm/memory.c
|
||||
@@ -1412,6 +1412,7 @@ unsigned long zap_page_range(struct vm_a
|
||||
tlb_finish_mmu(&tlb, address, end);
|
||||
return end;
|
||||
@@ -1408,6 +1408,7 @@ void zap_page_range(struct vm_area_struc
|
||||
mmu_notifier_invalidate_range_end(mm, start, end);
|
||||
tlb_finish_mmu(&tlb, start, end);
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(zap_page_range);
|
||||
|
||||
/**
|
||||
* zap_vma_ptes - remove ptes mapping the vma
|
||||
@@ -3087,6 +3088,7 @@ static inline int check_stack_guard_page
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(vmtruncate_range);
|
||||
|
||||
/*
|
||||
* We enter with non-exclusive mmap_sem (to exclude vma changes,
|
||||
* zap_page_range_single - remove user pages in a given range
|
||||
--- a/mm/vmalloc.c
|
||||
+++ b/mm/vmalloc.c
|
||||
@@ -1257,6 +1257,7 @@ void unmap_kernel_range(unsigned long ad
|
||||
@@ -1266,6 +1266,7 @@ void unmap_kernel_range(unsigned long ad
|
||||
vunmap_page_range(addr, end);
|
||||
flush_tlb_kernel_range(addr, end);
|
||||
}
|
||||
@ -97,21 +89,22 @@
|
||||
|
||||
int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages)
|
||||
{
|
||||
@@ -1394,6 +1395,7 @@ struct vm_struct *get_vm_area(unsigned l
|
||||
@@ -1403,6 +1404,7 @@ struct vm_struct *get_vm_area(unsigned l
|
||||
return __get_vm_area_node(size, 1, flags, VMALLOC_START, VMALLOC_END,
|
||||
-1, GFP_KERNEL, __builtin_return_address(0));
|
||||
}
|
||||
+EXPORT_SYMBOL_GPL(get_vm_area);
|
||||
|
||||
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
|
||||
void *caller)
|
||||
--- a/include/linux/mm.h
|
||||
+++ b/include/linux/mm.h
|
||||
@@ -872,6 +872,7 @@ extern bool skip_free_areas_node(unsigne
|
||||
|
||||
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
||||
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
|
||||
+void shmem_set_file(struct vm_area_struct *vma, struct file *file);
|
||||
int shmem_zero_setup(struct vm_area_struct *);
|
||||
|
||||
extern int can_do_mlock(void);
|
||||
const void *caller)
|
||||
--- a/include/linux/shmem_fs.h
|
||||
+++ b/include/linux/shmem_fs.h
|
||||
@@ -46,6 +46,8 @@ extern int shmem_init(void);
|
||||
extern int shmem_fill_super(struct super_block *sb, void *data, int silent);
|
||||
extern struct file *shmem_file_setup(const char *name,
|
||||
loff_t size, unsigned long flags);
|
||||
+
|
||||
+extern void shmem_set_file(struct vm_area_struct *vma, struct file *file);
|
||||
extern int shmem_zero_setup(struct vm_area_struct *);
|
||||
extern int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
||||
extern void shmem_unlock_mapping(struct address_space *mapping);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user