mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-04-21 12:27:27 +03: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:
@@ -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);
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user