mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-27 18:35:55 +02:00
[kernel] make all 3.6 patches apply and build
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@33911 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
8b3c85ca82
commit
eb0c020062
3201
target/linux/generic/config-3.6
Normal file
3201
target/linux/generic/config-3.6
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/usb/hso.c
|
--- a/drivers/net/usb/hso.c
|
||||||
+++ b/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, 0x8400)},
|
||||||
{USB_DEVICE(0x0af0, 0x8600)},
|
{USB_DEVICE(0x0af0, 0x8600)},
|
||||||
{USB_DEVICE(0x0af0, 0x8800)},
|
{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
|
the body of a message to majordomo@vger.kernel.org
|
||||||
More majordomo info at http://vger.kernel.org/majordomo-info.html
|
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
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/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);
|
tcp_enter_quickack_mode((struct sock *)tp);
|
||||||
break;
|
break;
|
||||||
case INET_ECN_CE:
|
case INET_ECN_CE:
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Documentation/filesystems/Locking
|
--- a/Documentation/filesystems/Locking
|
||||||
--- vfs-4cbe5a5/Documentation/filesystems/Locking 2012-09-01 19:39:58.000000000 +0200
|
+++ b/Documentation/filesystems/Locking
|
||||||
+++ vfs-3d5a648/Documentation/filesystems/Locking 2012-09-05 16:35:20.000000000 +0200
|
@@ -64,6 +64,7 @@ prototypes:
|
||||||
@@ -64,6 +64,7 @@
|
|
||||||
int (*atomic_open)(struct inode *, struct dentry *,
|
int (*atomic_open)(struct inode *, struct dentry *,
|
||||||
struct file *, unsigned open_flag,
|
struct file *, unsigned open_flag,
|
||||||
umode_t create_mode, int *opened);
|
umode_t create_mode, int *opened);
|
||||||
@ -9,7 +8,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
|
|||||||
|
|
||||||
locking rules:
|
locking rules:
|
||||||
all may block
|
all may block
|
||||||
@@ -92,6 +93,7 @@
|
@@ -92,6 +93,7 @@ removexattr: yes
|
||||||
fiemap: no
|
fiemap: no
|
||||||
update_time: no
|
update_time: no
|
||||||
atomic_open: yes
|
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
|
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
|
||||||
victim.
|
victim.
|
||||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a648/Documentation/filesystems/overlayfs.txt
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt 1970-01-01 01:00:00.000000000 +0100
|
+++ b/Documentation/filesystems/overlayfs.txt
|
||||||
+++ vfs-3d5a648/Documentation/filesystems/overlayfs.txt 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,199 @@
|
@@ -0,0 +1,199 @@
|
||||||
+Written by: Neil Brown <neilb@suse.de>
|
+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,
|
+filesystem are not allowed. If the underlying filesystem is changed,
|
||||||
+the behavior of the overlay is undefined, though it will not result in
|
+the behavior of the overlay is undefined, though it will not result in
|
||||||
+a crash or deadlock.
|
+a crash or deadlock.
|
||||||
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Documentation/filesystems/vfs.txt
|
--- a/Documentation/filesystems/vfs.txt
|
||||||
--- vfs-4cbe5a5/Documentation/filesystems/vfs.txt 2012-09-01 19:39:58.000000000 +0200
|
+++ b/Documentation/filesystems/vfs.txt
|
||||||
+++ vfs-3d5a648/Documentation/filesystems/vfs.txt 2012-09-05 16:35:20.000000000 +0200
|
@@ -363,6 +363,7 @@ struct inode_operations {
|
||||||
@@ -363,6 +363,7 @@
|
|
||||||
int (*atomic_open)(struct inode *, struct dentry *,
|
int (*atomic_open)(struct inode *, struct dentry *,
|
||||||
struct file *, unsigned open_flag,
|
struct file *, unsigned open_flag,
|
||||||
umode_t create_mode, int *opened);
|
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
|
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
|
but instead uses bmap to find out where the blocks in the file
|
||||||
are and uses those addresses directly.
|
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
|
invalidatepage: If a page has PagePrivate set, then invalidatepage
|
||||||
will be called when part or all of the page is to be removed
|
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
|
--- a/fs/ecryptfs/main.c
|
||||||
--- vfs-4cbe5a5/fs/ecryptfs/main.c 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/ecryptfs/main.c
|
||||||
+++ vfs-3d5a648/fs/ecryptfs/main.c 2012-09-05 16:35:20.000000000 +0200
|
@@ -566,6 +566,13 @@ static struct dentry *ecryptfs_mount(str
|
||||||
@@ -565,6 +565,13 @@
|
|
||||||
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
|
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
|
||||||
s->s_blocksize = path.dentry->d_sb->s_blocksize;
|
s->s_blocksize = path.dentry->d_sb->s_blocksize;
|
||||||
s->s_magic = ECRYPTFS_SUPER_MAGIC;
|
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);
|
inode = ecryptfs_get_inode(path.dentry->d_inode, s);
|
||||||
rc = PTR_ERR(inode);
|
rc = PTR_ERR(inode);
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
|
--- a/fs/internal.h
|
||||||
--- vfs-4cbe5a5/fs/internal.h 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/internal.h
|
||||||
+++ vfs-3d5a648/fs/internal.h 2012-09-05 16:35:20.000000000 +0200
|
@@ -42,11 +42,6 @@ static inline int __sync_blockdev(struct
|
||||||
@@ -42,11 +42,6 @@
|
|
||||||
extern void __init chrdev_init(void);
|
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
|
* namespace.c
|
||||||
*/
|
*/
|
||||||
extern int copy_mount_options(const void __user *, unsigned long *);
|
extern int copy_mount_options(const void __user *, unsigned long *);
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
|
--- a/fs/Kconfig
|
||||||
--- vfs-4cbe5a5/fs/Kconfig 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/Kconfig
|
||||||
+++ vfs-3d5a648/fs/Kconfig 2012-09-05 16:35:20.000000000 +0200
|
@@ -67,6 +67,7 @@ source "fs/quota/Kconfig"
|
||||||
@@ -67,6 +67,7 @@
|
|
||||||
|
|
||||||
source "fs/autofs4/Kconfig"
|
source "fs/autofs4/Kconfig"
|
||||||
source "fs/fuse/Kconfig"
|
source "fs/fuse/Kconfig"
|
||||||
@ -287,10 +281,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
|
|||||||
|
|
||||||
config CUSE
|
config CUSE
|
||||||
tristate "Character device in Userspace support"
|
tristate "Character device in Userspace support"
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
|
--- a/fs/Makefile
|
||||||
--- vfs-4cbe5a5/fs/Makefile 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/Makefile
|
||||||
+++ vfs-3d5a648/fs/Makefile 2012-09-05 16:35:20.000000000 +0200
|
@@ -106,6 +106,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
|
||||||
@@ -106,6 +106,7 @@
|
|
||||||
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
|
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
|
||||||
obj-$(CONFIG_ADFS_FS) += adfs/
|
obj-$(CONFIG_ADFS_FS) += adfs/
|
||||||
obj-$(CONFIG_FUSE_FS) += fuse/
|
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_UDF_FS) += udf/
|
||||||
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
|
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
|
||||||
obj-$(CONFIG_OMFS_FS) += omfs/
|
obj-$(CONFIG_OMFS_FS) += omfs/
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
|
--- a/fs/namei.c
|
||||||
--- vfs-4cbe5a5/fs/namei.c 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/namei.c
|
||||||
+++ vfs-3d5a648/fs/namei.c 2012-09-05 16:35:20.000000000 +0200
|
@@ -348,6 +348,7 @@ int __inode_permission(struct inode *ino
|
||||||
@@ -348,6 +348,7 @@
|
|
||||||
|
|
||||||
return security_inode_permission(inode, mask);
|
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
|
* 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);
|
error = may_open(&nd->path, acc_mode, open_flag);
|
||||||
if (error)
|
if (error)
|
||||||
goto out;
|
goto out;
|
||||||
@ -325,10 +317,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
|
|||||||
if (error == -EOPENSTALE)
|
if (error == -EOPENSTALE)
|
||||||
goto stale_open;
|
goto stale_open;
|
||||||
goto out;
|
goto out;
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
|
--- a/fs/namespace.c
|
||||||
--- vfs-4cbe5a5/fs/namespace.c 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/namespace.c
|
||||||
+++ vfs-3d5a648/fs/namespace.c 2012-09-05 16:35:20.000000000 +0200
|
@@ -1387,6 +1387,24 @@ void drop_collected_mounts(struct vfsmou
|
||||||
@@ -1387,6 +1387,24 @@
|
|
||||||
release_mounts(&umount_list);
|
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,
|
int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
|
||||||
struct vfsmount *root)
|
struct vfsmount *root)
|
||||||
{
|
{
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
|
--- a/fs/open.c
|
||||||
--- vfs-4cbe5a5/fs/open.c 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/open.c
|
||||||
+++ vfs-3d5a648/fs/open.c 2012-09-05 16:35:20.000000000 +0200
|
@@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
|
||||||
@@ -787,8 +787,7 @@
|
|
||||||
return ERR_PTR(error);
|
return ERR_PTR(error);
|
||||||
|
|
||||||
f->f_flags = flags;
|
f->f_flags = flags;
|
||||||
@ -366,7 +356,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
|
|||||||
if (!error) {
|
if (!error) {
|
||||||
error = open_check_o_direct(f);
|
error = open_check_o_direct(f);
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -803,6 +802,26 @@
|
@@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(dentry_open);
|
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)
|
static void __put_unused_fd(struct files_struct *files, unsigned int fd)
|
||||||
{
|
{
|
||||||
struct fdtable *fdt = files_fdtable(files);
|
struct fdtable *fdt = files_fdtable(files);
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/copy_up.c
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/copy_up.c 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/copy_up.c
|
||||||
+++ vfs-3d5a648/fs/overlayfs/copy_up.c 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,385 @@
|
@@ -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);
|
+ dput(parent);
|
||||||
+ return err;
|
+ return err;
|
||||||
+}
|
+}
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/dir.c 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/dir.c
|
||||||
+++ vfs-3d5a648/fs/overlayfs/dir.c 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,604 @@
|
@@ -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,
|
+ .listxattr = ovl_listxattr,
|
||||||
+ .removexattr = ovl_removexattr,
|
+ .removexattr = ovl_removexattr,
|
||||||
+};
|
+};
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inode.c
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/inode.c 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/inode.c
|
||||||
+++ vfs-3d5a648/fs/overlayfs/inode.c 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,372 @@
|
@@ -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;
|
+ return inode;
|
||||||
+
|
+
|
||||||
+}
|
+}
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Kconfig vfs-3d5a648/fs/overlayfs/Kconfig
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/Kconfig 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/Kconfig
|
||||||
+++ vfs-3d5a648/fs/overlayfs/Kconfig 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,4 @@
|
@@ -0,0 +1,4 @@
|
||||||
+config OVERLAYFS_FS
|
+config OVERLAYFS_FS
|
||||||
+ tristate "Overlay filesystem support"
|
+ tristate "Overlay filesystem support"
|
||||||
+ help
|
+ help
|
||||||
+ Add support for overlay filesystem.
|
+ Add support for overlay filesystem.
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Makefile
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/Makefile 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/Makefile
|
||||||
+++ vfs-3d5a648/fs/overlayfs/Makefile 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,7 @@
|
@@ -0,0 +1,7 @@
|
||||||
+#
|
+#
|
||||||
+# Makefile for the overlay filesystem.
|
+# 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
|
+obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
|
||||||
+
|
+
|
||||||
+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.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
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/overlayfs.h 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/overlayfs.h
|
||||||
+++ vfs-3d5a648/fs/overlayfs/overlayfs.h 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,70 @@
|
@@ -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 */
|
+/* copy_up.c */
|
||||||
+int ovl_copy_up(struct dentry *dentry);
|
+int ovl_copy_up(struct dentry *dentry);
|
||||||
+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
|
+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
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/readdir.c 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/readdir.c
|
||||||
+++ vfs-3d5a648/fs/overlayfs/readdir.c 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,566 @@
|
@@ -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;
|
+ return err;
|
||||||
+}
|
+}
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/super.c
|
--- /dev/null
|
||||||
--- vfs-4cbe5a5/fs/overlayfs/super.c 1970-01-01 01:00:00.000000000 +0100
|
+++ b/fs/overlayfs/super.c
|
||||||
+++ vfs-3d5a648/fs/overlayfs/super.c 2012-09-05 16:35:20.000000000 +0200
|
|
||||||
@@ -0,0 +1,685 @@
|
@@ -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_init(ovl_init);
|
||||||
+module_exit(ovl_exit);
|
+module_exit(ovl_exit);
|
||||||
diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
|
--- a/fs/splice.c
|
||||||
--- vfs-4cbe5a5/fs/splice.c 2012-09-01 19:39:58.000000000 +0200
|
+++ b/fs/splice.c
|
||||||
+++ vfs-3d5a648/fs/splice.c 2012-09-05 16:35:20.000000000 +0200
|
@@ -1308,6 +1308,7 @@ long do_splice_direct(struct file *in, l
|
||||||
@@ -1308,6 +1308,7 @@
|
|
||||||
|
|
||||||
return ret;
|
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,
|
static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
|
||||||
struct pipe_inode_info *opipe,
|
struct pipe_inode_info *opipe,
|
||||||
diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
|
--- a/include/linux/fs.h
|
||||||
--- vfs-4cbe5a5/include/linux/fs.h 2012-09-01 19:39:58.000000000 +0200
|
+++ b/include/linux/fs.h
|
||||||
+++ vfs-3d5a648/include/linux/fs.h 2012-09-05 16:35:20.000000000 +0200
|
@@ -505,6 +505,12 @@ struct iattr {
|
||||||
@@ -505,6 +505,12 @@
|
|
||||||
*/
|
*/
|
||||||
#include <linux/quota.h>
|
#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
|
* 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 */
|
/* Being remounted read-only */
|
||||||
int s_readonly_remount;
|
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 */
|
/* superblock cache pruning functions */
|
||||||
@@ -1835,6 +1846,7 @@
|
@@ -1835,6 +1846,7 @@ struct inode_operations {
|
||||||
int (*atomic_open)(struct inode *, struct dentry *,
|
int (*atomic_open)(struct inode *, struct dentry *,
|
||||||
struct file *, unsigned open_flag,
|
struct file *, unsigned open_flag,
|
||||||
umode_t create_mode, int *opened);
|
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;
|
} ____cacheline_aligned;
|
||||||
|
|
||||||
struct seq_file;
|
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 *filp_open(const char *, int, umode_t);
|
||||||
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
|
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
|
||||||
const char *, int);
|
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 struct file * dentry_open(const struct path *, int, const struct cred *);
|
||||||
extern int filp_close(struct file *, fl_owner_t id);
|
extern int filp_close(struct file *, fl_owner_t id);
|
||||||
extern char * getname(const char __user *);
|
extern char * getname(const char __user *);
|
||||||
@@ -2402,6 +2415,7 @@
|
@@ -2402,6 +2415,7 @@ extern sector_t bmap(struct inode *, sec
|
||||||
#endif
|
#endif
|
||||||
extern int notify_change(struct dentry *, struct iattr *);
|
extern int notify_change(struct dentry *, struct iattr *);
|
||||||
extern int inode_permission(struct inode *, int);
|
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);
|
extern int generic_permission(struct inode *, int);
|
||||||
|
|
||||||
static inline bool execute_ok(struct inode *inode)
|
static inline bool execute_ok(struct inode *inode)
|
||||||
diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mount.h
|
--- a/include/linux/mount.h
|
||||||
--- vfs-4cbe5a5/include/linux/mount.h 2012-09-01 19:39:58.000000000 +0200
|
+++ b/include/linux/mount.h
|
||||||
+++ vfs-3d5a648/include/linux/mount.h 2012-09-05 16:35:20.000000000 +0200
|
@@ -66,6 +66,9 @@ extern void mnt_pin(struct vfsmount *mnt
|
||||||
@@ -66,6 +66,9 @@
|
|
||||||
extern void mnt_unpin(struct vfsmount *mnt);
|
extern void mnt_unpin(struct vfsmount *mnt);
|
||||||
extern int __mnt_is_readonly(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;
|
struct file_system_type;
|
||||||
extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
|
extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
|
||||||
int flags, const char *name,
|
int flags, const char *name,
|
||||||
diff -Nur -x .git vfs-4cbe5a5/MAINTAINERS vfs-3d5a648/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
--- vfs-4cbe5a5/MAINTAINERS 2012-09-01 19:39:58.000000000 +0200
|
+++ b/MAINTAINERS
|
||||||
+++ vfs-3d5a648/MAINTAINERS 2012-09-05 16:35:20.000000000 +0200
|
@@ -5105,6 +5105,13 @@ F: drivers/scsi/osd/
|
||||||
@@ -5103,6 +5103,13 @@
|
|
||||||
F: include/scsi/osd_*
|
F: include/scsi/osd_*
|
||||||
F: fs/exofs/
|
F: fs/exofs/
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/usb/host/ehci-hcd.c
|
--- a/drivers/usb/host/ehci-hcd.c
|
||||||
+++ b/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",
|
"USB %x.%x started, EHCI %x.%02x%s\n",
|
||||||
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
|
||||||
temp >> 8, temp & 0xff,
|
temp >> 8, temp & 0xff,
|
||||||
@ -11,7 +11,7 @@
|
|||||||
&ehci->regs->intr_enable); /* Turn On Interrupts */
|
&ehci->regs->intr_enable); /* Turn On Interrupts */
|
||||||
--- a/drivers/usb/host/ehci-hub.c
|
--- a/drivers/usb/host/ehci-hub.c
|
||||||
+++ b/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
|
* always set, seem to clear PORT_OCC and PORT_CSC when writing to
|
||||||
* PORT_POWER; that's surprising, but maybe within-spec.
|
* PORT_POWER; that's surprising, but maybe within-spec.
|
||||||
*/
|
*/
|
||||||
@ -20,7 +20,7 @@
|
|||||||
mask = PORT_CSC | PORT_PEC | PORT_OCC;
|
mask = PORT_CSC | PORT_PEC | PORT_OCC;
|
||||||
else
|
else
|
||||||
mask = PORT_CSC | PORT_PEC;
|
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)
|
if (temp & PORT_PEC)
|
||||||
status |= USB_PORT_STAT_C_ENABLE << 16;
|
status |= USB_PORT_STAT_C_ENABLE << 16;
|
||||||
|
|
||||||
@ -31,7 +31,7 @@
|
|||||||
/*
|
/*
|
||||||
--- a/drivers/usb/host/ehci.h
|
--- a/drivers/usb/host/ehci.h
|
||||||
+++ b/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 use_dummy_qh:1; /* AMD Frame List table quirk*/
|
||||||
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
|
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
|
||||||
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/scripts/setlocalversion
|
--- a/scripts/setlocalversion
|
||||||
+++ b/scripts/setlocalversion
|
+++ b/scripts/setlocalversion
|
||||||
@@ -168,7 +168,7 @@ else
|
@@ -167,7 +167,7 @@ else
|
||||||
# annotated or signed tagged state (as git describe only
|
# annotated or signed tagged state (as git describe only
|
||||||
# looks at signed or annotated tags - git tag -a/-s) and
|
# looks at signed or annotated tags - git tag -a/-s) and
|
||||||
# LOCALVERSION= is not specified
|
# LOCALVERSION= is not specified
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -559,9 +559,9 @@ endif # $(dot-config)
|
@@ -556,9 +556,9 @@ endif # $(dot-config)
|
||||||
all: vmlinux
|
all: vmlinux
|
||||||
|
|
||||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
@ -12,7 +12,7 @@
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
include $(srctree)/arch/$(SRCARCH)/Makefile
|
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)
|
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
|
||||||
CHECKFLAGS += $(NOSTDINC_FLAGS)
|
CHECKFLAGS += $(NOSTDINC_FLAGS)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -374,7 +374,7 @@ KBUILD_CFLAGS_KERNEL :=
|
@@ -369,7 +369,7 @@ KBUILD_CFLAGS_KERNEL :=
|
||||||
KBUILD_AFLAGS := -D__ASSEMBLY__
|
KBUILD_AFLAGS := -D__ASSEMBLY__
|
||||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/stddef.h
|
--- a/include/linux/stddef.h
|
||||||
+++ b/include/linux/stddef.h
|
+++ b/include/linux/stddef.h
|
||||||
@@ -16,6 +16,7 @@ enum {
|
@@ -12,6 +12,7 @@ enum {
|
||||||
false = 0,
|
false = 0,
|
||||||
true = 1
|
true = 1
|
||||||
};
|
};
|
||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
#undef offsetof
|
#undef offsetof
|
||||||
#ifdef __compiler_offsetof
|
#ifdef __compiler_offsetof
|
||||||
@@ -23,6 +24,5 @@ enum {
|
@@ -19,6 +20,5 @@ enum {
|
||||||
#else
|
#else
|
||||||
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
|
||||||
#endif
|
#endif
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
#ifndef SYMBOL_PREFIX
|
#ifndef SYMBOL_PREFIX
|
||||||
#define VMLINUX_SYMBOL(sym) sym
|
#define VMLINUX_SYMBOL(sym) sym
|
||||||
#else
|
#else
|
||||||
@@ -275,14 +296,14 @@
|
@@ -276,14 +297,14 @@
|
||||||
/* Kernel symbol table: Normal symbols */ \
|
/* Kernel symbol table: Normal symbols */ \
|
||||||
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
|
||||||
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
VMLINUX_SYMBOL(__start___ksymtab) = .; \
|
||||||
@ -45,7 +45,7 @@
|
|||||||
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
|
||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
@@ -344,7 +365,7 @@
|
@@ -345,7 +366,7 @@
|
||||||
\
|
\
|
||||||
/* Kernel symbol table: strings */ \
|
/* Kernel symbol table: strings */ \
|
||||||
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
|
||||||
@ -54,7 +54,7 @@
|
|||||||
} \
|
} \
|
||||||
\
|
\
|
||||||
/* __*init sections */ \
|
/* __*init sections */ \
|
||||||
@@ -676,6 +697,9 @@
|
@@ -670,6 +691,9 @@
|
||||||
EXIT_TEXT \
|
EXIT_TEXT \
|
||||||
EXIT_DATA \
|
EXIT_DATA \
|
||||||
EXIT_CALL \
|
EXIT_CALL \
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/netfilter/Kconfig
|
--- a/net/netfilter/Kconfig
|
||||||
+++ b/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
|
config NF_CONNTRACK_H323
|
||||||
tristate "H.323 protocol support"
|
tristate "H.323 protocol support"
|
||||||
@ -8,7 +8,7 @@
|
|||||||
depends on NETFILTER_ADVANCED
|
depends on NETFILTER_ADVANCED
|
||||||
help
|
help
|
||||||
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
|
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
|
config NETFILTER_XT_TARGET_TCPMSS
|
||||||
tristate '"TCPMSS" target support'
|
tristate '"TCPMSS" target support'
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/crypto/Kconfig
|
--- a/drivers/crypto/Kconfig
|
||||||
+++ b/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
|
depends on PLAT_ORION
|
||||||
select CRYPTO_ALGAPI
|
select CRYPTO_ALGAPI
|
||||||
select CRYPTO_AES
|
select CRYPTO_AES
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/lib/Kconfig
|
--- a/lib/Kconfig
|
||||||
+++ b/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
|
# Textsearch support is select'ed if needed
|
||||||
#
|
#
|
||||||
config TEXTSEARCH
|
config TEXTSEARCH
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/wireless/Kconfig
|
--- a/net/wireless/Kconfig
|
||||||
+++ b/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.
|
you want this built into your kernel.
|
||||||
|
|
||||||
config LIB80211_CRYPT_WEP
|
config LIB80211_CRYPT_WEP
|
||||||
|
@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
|||||||
---
|
---
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/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
|
config ARCH_MAY_HAVE_PC_FDC
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
|
|||||||
config CEVT_BCM1480
|
config CEVT_BCM1480
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@@ -2330,6 +2327,18 @@ config USE_OF
|
@@ -2367,6 +2364,18 @@ config USE_OF
|
||||||
help
|
help
|
||||||
Include support for flattened device tree machine descriptions.
|
Include support for flattened device tree machine descriptions.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -976,6 +976,10 @@ config SYNC_R4K
|
@@ -993,6 +993,10 @@ config SYNC_R4K
|
||||||
config MIPS_MACHINE
|
config MIPS_MACHINE
|
||||||
def_bool n
|
def_bool n
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
|||||||
--
|
--
|
||||||
--- a/arch/mips/Kconfig
|
--- a/arch/mips/Kconfig
|
||||||
+++ b/arch/mips/Kconfig
|
+++ b/arch/mips/Kconfig
|
||||||
@@ -961,6 +961,17 @@ config I8259
|
@@ -978,6 +978,17 @@ config I8259
|
||||||
config MIPS_BONITO64
|
config MIPS_BONITO64
|
||||||
bool
|
bool
|
||||||
|
|
||||||
@ -92,7 +92,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
|
|||||||
+#endif /* CONFIG_MIPS_FPU_EMU */
|
+#endif /* CONFIG_MIPS_FPU_EMU */
|
||||||
--- a/arch/mips/math-emu/dsemul.c
|
--- a/arch/mips/math-emu/dsemul.c
|
||||||
+++ b/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 */
|
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)
|
int do_dsemulret(struct pt_regs *xcp)
|
||||||
{
|
{
|
||||||
struct emuframe __user *fr;
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
--- a/arch/mips/include/asm/module.h
|
--- a/arch/mips/include/asm/module.h
|
||||||
+++ b/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_start;
|
||||||
const struct exception_table_entry *dbe_end;
|
const struct exception_table_entry *dbe_end;
|
||||||
struct mips_hi16 *r_mips_hi16_list;
|
struct mips_hi16 *r_mips_hi16_list;
|
||||||
@ -27,7 +27,7 @@
|
|||||||
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
|
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
|
||||||
--- a/arch/mips/kernel/module.c
|
--- a/arch/mips/kernel/module.c
|
||||||
+++ b/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 LIST_HEAD(dbe_list);
|
||||||
static DEFINE_SPINLOCK(dbe_lock);
|
static DEFINE_SPINLOCK(dbe_lock);
|
||||||
|
|
||||||
@ -248,7 +248,7 @@
|
|||||||
|
|
||||||
static int apply_r_mips_none(struct module *me, u32 *location, Elf_Addr v)
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,7 +301,7 @@
|
|||||||
{
|
{
|
||||||
if (v % 4) {
|
if (v % 4) {
|
||||||
pr_err("module %s: dangerous R_MIPS_26 RELArelocation\n",
|
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)) {
|
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)
|
static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
|
||||||
{
|
{
|
||||||
struct mips_hi16 *n;
|
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);
|
list_add(&me->arch.dbe_list, &dbe_list);
|
||||||
spin_unlock_irq(&dbe_lock);
|
spin_unlock_irq(&dbe_lock);
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
--- a/arch/mips/oprofile/op_model_mipsxx.c
|
--- a/arch/mips/oprofile/op_model_mipsxx.c
|
||||||
+++ b/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)
|
+static irqreturn_t mipsxx_perfcount_int(int irq, void *dev_id)
|
||||||
@ -12,9 +12,9 @@
|
|||||||
static int __init mipsxx_init(void)
|
static int __init mipsxx_init(void)
|
||||||
{
|
{
|
||||||
int counters;
|
int counters;
|
||||||
@@ -374,6 +379,10 @@ static int __init mipsxx_init(void)
|
@@ -385,6 +390,10 @@ static int __init mipsxx_init(void)
|
||||||
save_perf_irq = perf_irq;
|
return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
|
||||||
perf_irq = mipsxx_perfcount_handler;
|
0, "Perfcounter", save_perf_irq);
|
||||||
|
|
||||||
+ if (cp0_perfcount_irq >= 0)
|
+ if (cp0_perfcount_irq >= 0)
|
||||||
+ return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
|
+ return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
|
||||||
@ -23,9 +23,9 @@
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -381,6 +390,9 @@ static void mipsxx_exit(void)
|
@@ -395,6 +404,9 @@ static void mipsxx_exit(void)
|
||||||
{
|
if ((cp0_perfcount_irq >= 0) && (cp0_compare_irq != cp0_perfcount_irq))
|
||||||
int counters = op_model_mipsxx_ops.num_counters;
|
free_irq(cp0_perfcount_irq, save_perf_irq);
|
||||||
|
|
||||||
+ if (cp0_perfcount_irq >= 0)
|
+ if (cp0_perfcount_irq >= 0)
|
||||||
+ free_irq(cp0_perfcount_irq, save_perf_irq);
|
+ free_irq(cp0_perfcount_irq, save_perf_irq);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/arch/mips/kernel/cpu-probe.c
|
--- a/arch/mips/kernel/cpu-probe.c
|
||||||
+++ b/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";
|
__cpu_name[cpu] = "MIPS 20Kc";
|
||||||
break;
|
break;
|
||||||
case PRID_IMP_24K:
|
case PRID_IMP_24K:
|
||||||
|
@ -3,7 +3,7 @@ they still want to support gcc 3.3 -- well, we don't.
|
|||||||
|
|
||||||
--- a/arch/powerpc/Makefile
|
--- a/arch/powerpc/Makefile
|
||||||
+++ b/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
|
KBUILD_CFLAGS += -mno-sched-epilog
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
--- a/arch/powerpc/Makefile
|
--- a/arch/powerpc/Makefile
|
||||||
+++ b/arch/powerpc/Makefile
|
+++ b/arch/powerpc/Makefile
|
||||||
@@ -94,7 +94,6 @@ else
|
@@ -86,7 +86,6 @@ CPP = $(CC) -E $(KBUILD_CFLAGS)
|
||||||
endif
|
|
||||||
endif
|
CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
|
||||||
|
|
||||||
-KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
|
-KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
|
||||||
|
|
||||||
ifeq ($(CONFIG_TUNE_CELL),y)
|
# No AltiVec or VSX instructions when building kernel
|
||||||
KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
|
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/addrspace.h>
|
||||||
#include <asm/bootinfo.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();
|
bootmem_init();
|
||||||
@ -500,7 +500,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||||||
static void __init resource_init(void)
|
static void __init resource_init(void)
|
||||||
{
|
{
|
||||||
int i;
|
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.
|
* 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++) {
|
for (i = 0; i < boot_mem_map.nr_map; i++) {
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
unsigned long start, end;
|
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, &code_resource);
|
||||||
request_resource(res, &data_resource);
|
request_resource(res, &data_resource);
|
||||||
@ -519,7 +519,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||||||
|
|
||||||
--- a/arch/mips/kernel/smp.c
|
--- a/arch/mips/kernel/smp.c
|
||||||
+++ b/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_page);
|
||||||
EXPORT_SYMBOL(flush_tlb_one);
|
EXPORT_SYMBOL(flush_tlb_one);
|
||||||
|
@ -146,7 +146,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
|
|||||||
- .size relocate_new_kernel_size, PTRSIZE
|
- .size relocate_new_kernel_size, PTRSIZE
|
||||||
--- a/arch/mips/kernel/vmlinux.lds.S
|
--- a/arch/mips/kernel/vmlinux.lds.S
|
||||||
+++ b/arch/mips/kernel/vmlinux.lds.S
|
+++ b/arch/mips/kernel/vmlinux.lds.S
|
||||||
@@ -50,6 +50,10 @@ SECTIONS
|
@@ -51,6 +51,10 @@ SECTIONS
|
||||||
*(.text.*)
|
*(.text.*)
|
||||||
*(.fixup)
|
*(.fixup)
|
||||||
*(.gnu.warning)
|
*(.gnu.warning)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/kernel/module.c
|
--- a/kernel/module.c
|
||||||
+++ b/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)
|
void * __weak module_alloc(unsigned long size)
|
||||||
{
|
{
|
||||||
|
@ -31,11 +31,11 @@
|
|||||||
*/
|
*/
|
||||||
#define PART(x) ((struct mtd_part *)(x))
|
#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
|
* 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);
|
EXPORT_SYMBOL_GPL(mtd_del_partition);
|
||||||
|
|
||||||
@ -55,7 +55,7 @@
|
|||||||
+ struct squashfs_super_block sb;
|
+ struct squashfs_super_block sb;
|
||||||
+ int len, ret;
|
+ 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))) {
|
+ if (ret || (len != sizeof(sb))) {
|
||||||
+ printk(KERN_ALERT "split_squashfs: error occured while reading "
|
+ printk(KERN_ALERT "split_squashfs: error occured while reading "
|
||||||
+ "from \"%s\"\n", master->name);
|
+ "from \"%s\"\n", master->name);
|
||||||
@ -191,7 +191,7 @@
|
|||||||
/*
|
/*
|
||||||
* This function, given a master MTD object and a partition table, creates
|
* 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
|
* 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;
|
struct mtd_part *slave;
|
||||||
uint64_t cur_offset = 0;
|
uint64_t cur_offset = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -201,7 +201,7 @@
|
|||||||
|
|
||||||
printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
|
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);
|
add_mtd_device(&slave->mtd);
|
||||||
|
|
||||||
@ -257,7 +257,7 @@
|
|||||||
|
|
||||||
--- a/drivers/mtd/mtdchar.c
|
--- a/drivers/mtd/mtdchar.c
|
||||||
+++ b/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;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -280,7 +280,7 @@
|
|||||||
struct mtd_info {
|
struct mtd_info {
|
||||||
u_char type;
|
u_char type;
|
||||||
uint32_t flags;
|
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 (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
|
||||||
int (*_suspend) (struct mtd_info *mtd);
|
int (*_suspend) (struct mtd_info *mtd);
|
||||||
void (*_resume) (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
|
* If the driver is something smart, like UBI, it may need to maintain
|
||||||
* its own reference counting. The below functions are only for driver.
|
* 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);
|
int defnr_parts);
|
||||||
#define mtd_device_register(master, parts, nr_parts) \
|
#define mtd_device_register(master, parts, nr_parts) \
|
||||||
mtd_device_parse_register(master, NULL, NULL, parts, nr_parts)
|
mtd_device_parse_register(master, NULL, NULL, parts, nr_parts)
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
/* Our partition linked list */
|
/* Our partition linked list */
|
||||||
static LIST_HEAD(mtd_partitions);
|
static LIST_HEAD(mtd_partitions);
|
||||||
static DEFINE_MUTEX(mtd_partitions_mutex);
|
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);
|
struct mtd_part *part = PART(mtd);
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -70,21 +70,21 @@
|
|||||||
return ret;
|
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);
|
struct mtd_part *part = PART(instr->mtd);
|
||||||
+ size_t wrlen = 0;
|
+ size_t wrlen = 0;
|
||||||
|
|
||||||
+ if (instr->mtd->flags & MTD_ERASE_PARTIAL) {
|
+ if (instr->mtd->flags & MTD_ERASE_PARTIAL) {
|
||||||
+ if (instr->partial_start) {
|
+ if (instr->partial_start) {
|
||||||
+ part->master->write(part->master,
|
+ part->master->_write(part->master,
|
||||||
+ instr->addr, instr->erase_buf_ofs,
|
+ instr->addr, instr->erase_buf_ofs,
|
||||||
+ &wrlen, instr->erase_buf);
|
+ &wrlen, instr->erase_buf);
|
||||||
+ instr->addr += instr->erase_buf_ofs;
|
+ instr->addr += instr->erase_buf_ofs;
|
||||||
+ } else {
|
+ } else {
|
||||||
+ instr->len -= instr->erase_buf_ofs;
|
+ instr->len -= instr->erase_buf_ofs;
|
||||||
+ part->master->write(part->master,
|
+ part->master->_write(part->master,
|
||||||
+ instr->addr + instr->len,
|
+ instr->addr + instr->len,
|
||||||
+ instr->erase_buf_ofs, &wrlen,
|
+ instr->erase_buf_ofs, &wrlen,
|
||||||
+ instr->erase_buf +
|
+ instr->erase_buf +
|
||||||
@ -96,7 +96,7 @@
|
|||||||
if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
|
if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
|
||||||
instr->fail_addr -= part->offset;
|
instr->fail_addr -= part->offset;
|
||||||
instr->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) &&
|
if ((slave->mtd.flags & MTD_WRITEABLE) &&
|
||||||
mtd_mod_by_eb(slave->offset, &slave->mtd)) {
|
mtd_mod_by_eb(slave->offset, &slave->mtd)) {
|
||||||
/* Doesn't start on a boundary of major erase size */
|
/* Doesn't start on a boundary of major erase size */
|
||||||
@ -129,7 +129,7 @@
|
|||||||
+ part->name);
|
+ part->name);
|
||||||
|
|
||||||
slave->mtd.ecclayout = master->ecclayout;
|
slave->mtd.ecclayout = master->ecclayout;
|
||||||
if (master->block_isbad) {
|
slave->mtd.ecc_strength = master->ecc_strength;
|
||||||
--- a/include/linux/mtd/mtd.h
|
--- a/include/linux/mtd/mtd.h
|
||||||
+++ b/include/linux/mtd/mtd.h
|
+++ b/include/linux/mtd/mtd.h
|
||||||
@@ -58,6 +58,10 @@ struct erase_info {
|
@@ -58,6 +58,10 @@ struct erase_info {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/redboot.c
|
--- a/drivers/mtd/redboot.c
|
||||||
+++ b/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
|
#endif
|
||||||
names += strlen(names)+1;
|
names += strlen(names)+1;
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
int nrparts = 0;
|
int nrparts = 0;
|
||||||
struct fis_image_desc *buf;
|
struct fis_image_desc *buf;
|
||||||
struct mtd_partition *parts;
|
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
|
#endif
|
||||||
@ -34,7 +34,7 @@
|
|||||||
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
|
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
|
||||||
if (nulllen > 0) {
|
if (nulllen > 0) {
|
||||||
strcpy(nullname, nullstring);
|
strcpy(nullname, nullstring);
|
||||||
@@ -253,6 +256,8 @@ static int parse_redboot_partitions(stru
|
@@ -251,6 +254,8 @@ static int parse_redboot_partitions(stru
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
for ( ; i<nrparts; i++) {
|
for ( ; i<nrparts; i++) {
|
||||||
@ -43,7 +43,7 @@
|
|||||||
parts[i].size = fl->img->size;
|
parts[i].size = fl->img->size;
|
||||||
parts[i].offset = fl->img->flash_base;
|
parts[i].offset = fl->img->flash_base;
|
||||||
parts[i].name = names;
|
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;
|
fl = fl->next;
|
||||||
kfree(tmp_fl);
|
kfree(tmp_fl);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#include <linux/mutex.h>
|
#include <linux/mutex.h>
|
||||||
#include <linux/mount.h>
|
#include <linux/mount.h>
|
||||||
#include <linux/slab.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 */
|
/* FIXME: ensure that mtd->size % erase_size == 0 */
|
||||||
@ -22,7 +22,7 @@
|
|||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
if (!devname)
|
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 */
|
/* Setup the MTD structure */
|
||||||
/* make the name contain the block device in */
|
/* make the name contain the block device in */
|
||||||
@ -41,7 +41,7 @@
|
|||||||
dev->mtd.erasesize = erase_size;
|
dev->mtd.erasesize = erase_size;
|
||||||
dev->mtd.writesize = 1;
|
dev->mtd.writesize = 1;
|
||||||
dev->mtd.writebufsize = PAGE_SIZE;
|
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.priv = dev;
|
||||||
dev->mtd.owner = THIS_MODULE;
|
dev->mtd.owner = THIS_MODULE;
|
||||||
|
|
||||||
@ -62,7 +62,7 @@
|
|||||||
return dev;
|
return dev;
|
||||||
|
|
||||||
devinit_err:
|
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)
|
static int block2mtd_setup2(const char *val)
|
||||||
{
|
{
|
||||||
@ -74,7 +74,7 @@
|
|||||||
char *name;
|
char *name;
|
||||||
size_t erase_size = PAGE_SIZE;
|
size_t erase_size = PAGE_SIZE;
|
||||||
int i, ret;
|
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);
|
strcpy(str, val);
|
||||||
kill_final_newline(str);
|
kill_final_newline(str);
|
||||||
|
|
||||||
@ -83,7 +83,7 @@
|
|||||||
token[i] = strsep(&str, ",");
|
token[i] = strsep(&str, ",");
|
||||||
|
|
||||||
if (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");
|
parse_err("illegal erase size");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@
|
|||||||
|
|
||||||
return 0;
|
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);
|
module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
|
||||||
@ -106,7 +106,7 @@
|
|||||||
{
|
{
|
||||||
--- a/block/partition-generic.c
|
--- a/block/partition-generic.c
|
||||||
+++ b/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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/devices/block2mtd.c
|
--- a/drivers/mtd/devices/block2mtd.c
|
||||||
+++ b/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 block_device *blkdev;
|
||||||
struct mtd_info mtd;
|
struct mtd_info mtd;
|
||||||
struct mutex write_mutex;
|
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;
|
size_t len = instr->len;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@ -22,7 +22,7 @@
|
|||||||
instr->state = MTD_ERASING;
|
instr->state = MTD_ERASING;
|
||||||
mutex_lock(&dev->write_mutex);
|
mutex_lock(&dev->write_mutex);
|
||||||
err = _block2mtd_erase(dev, from, len);
|
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;
|
instr->state = MTD_ERASE_DONE;
|
||||||
|
|
||||||
mtd_erase_callback(instr);
|
mtd_erase_callback(instr);
|
||||||
@ -33,7 +33,7 @@
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,7 +113,13 @@
|
@@ -101,7 +113,13 @@ static int block2mtd_read(struct mtd_inf
|
||||||
struct page *page;
|
struct page *page;
|
||||||
int index = from >> PAGE_SHIFT;
|
int index = from >> PAGE_SHIFT;
|
||||||
int offset = from & (PAGE_SIZE-1);
|
int offset = from & (PAGE_SIZE-1);
|
||||||
@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
while (len) {
|
while (len) {
|
||||||
if ((offset + len) > PAGE_SIZE)
|
if ((offset + len) > PAGE_SIZE)
|
||||||
@@ -111,8 +129,10 @@
|
@@ -111,8 +129,10 @@ static int block2mtd_read(struct mtd_inf
|
||||||
len = len - cpylen;
|
len = len - cpylen;
|
||||||
|
|
||||||
page = page_read(dev->blkdev->bd_inode->i_mapping, index);
|
page = page_read(dev->blkdev->bd_inode->i_mapping, index);
|
||||||
@ -60,7 +60,7 @@
|
|||||||
|
|
||||||
memcpy(buf, page_address(page) + offset, cpylen);
|
memcpy(buf, page_address(page) + offset, cpylen);
|
||||||
page_cache_release(page);
|
page_cache_release(page);
|
||||||
@@ -123,7 +143,10 @@
|
@@ -123,7 +143,10 @@ static int block2mtd_read(struct mtd_inf
|
||||||
offset = 0;
|
offset = 0;
|
||||||
index++;
|
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)
|
size_t *retlen, const u_char *buf)
|
||||||
{
|
{
|
||||||
struct block2mtd_dev *dev = mtd->priv;
|
struct block2mtd_dev *dev = mtd->priv;
|
||||||
@ -96,7 +96,7 @@
|
|||||||
return err;
|
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)
|
static void block2mtd_sync(struct mtd_info *mtd)
|
||||||
{
|
{
|
||||||
struct block2mtd_dev *dev = mtd->priv;
|
struct block2mtd_dev *dev = mtd->priv;
|
||||||
@ -217,7 +217,7 @@
|
|||||||
struct block2mtd_dev *dev;
|
struct block2mtd_dev *dev;
|
||||||
struct mtd_partition *part;
|
struct mtd_partition *part;
|
||||||
char *name;
|
char *name;
|
||||||
@@ -220,36 +329,17 @@
|
@@ -220,36 +329,17 @@ static struct block2mtd_dev *add_device(
|
||||||
if (!devname)
|
if (!devname)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -258,7 +258,7 @@
|
|||||||
|
|
||||||
/* Setup the MTD structure */
|
/* Setup the MTD structure */
|
||||||
/* make the name contain the block device in */
|
/* 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._read = block2mtd_read;
|
||||||
dev->mtd.priv = dev;
|
dev->mtd.priv = dev;
|
||||||
dev->mtd.owner = THIS_MODULE;
|
dev->mtd.owner = THIS_MODULE;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/devices/block2mtd.c
|
--- a/drivers/mtd/devices/block2mtd.c
|
||||||
+++ b/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
|
/* We might not have rootfs mounted at this point. Try
|
||||||
to resolve the device name by other means. */
|
to resolve the device name by other means. */
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
/* Keep gcc happy */
|
/* Keep gcc happy */
|
||||||
--- a/drivers/mtd/nand/plat_nand.c
|
--- a/drivers/mtd/nand/plat_nand.c
|
||||||
+++ b/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 */
|
/* Scan to find existence of the device */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/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;
|
return 0;
|
||||||
|
|
||||||
case FL_ERASING:
|
case FL_ERASING:
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
|
#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
|
||||||
#define OPCODE_RDID 0x9f /* Read JEDEC ID */
|
#define OPCODE_RDID 0x9f /* Read JEDEC ID */
|
||||||
|
|
||||||
@@ -625,6 +626,7 @@ struct flash_info {
|
@@ -594,6 +595,7 @@ struct flash_info {
|
||||||
u16 flags;
|
u16 flags;
|
||||||
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
|
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
|
||||||
#define M25P_NO_ERASE 0x02 /* No erase command needed */
|
#define M25P_NO_ERASE 0x02 /* No erase command needed */
|
||||||
@ -16,7 +16,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
|
#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) },
|
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },
|
||||||
{ "mx25l25655e", INFO(0xc22619, 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
|
/* Spansion -- single (large) sector size only, at least
|
||||||
* for the chips listed here (without boot sectors).
|
* 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) {
|
if (info->flags & SECT_4K) {
|
||||||
flash->erase_opcode = OPCODE_BE_4K;
|
flash->erase_opcode = OPCODE_BE_4K;
|
||||||
flash->mtd.erasesize = 4096;
|
flash->mtd.erasesize = 4096;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/devices/m25p80.c
|
--- a/drivers/mtd/devices/m25p80.c
|
||||||
+++ b/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) },
|
{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||||
{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
|
{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
|
||||||
{ "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, 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(+)
|
1 file changed, 1 insertion(+)
|
||||||
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
|
||||||
+++ b/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 */
|
/* Write Buffer Load */
|
||||||
map_write(map, CMD(0x25), cmd_adr);
|
map_write(map, CMD(0x25), cmd_adr);
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/drivers/mtd/devices/Kconfig
|
--- a/drivers/mtd/devices/Kconfig
|
||||||
+++ b/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
|
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
|
+config M25PXX_PREFER_SMALL_SECTOR_ERASE
|
||||||
+ bool "Prefer small sector erase"
|
+ bool "Prefer small sector erase"
|
||||||
@ -30,8 +30,8 @@
|
|||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
|
|
||||||
struct m25p {
|
struct m25p {
|
||||||
@@ -925,7 +931,7 @@ static int __devinit m25p_probe(struct s
|
@@ -899,7 +905,7 @@ static int __devinit m25p_probe(struct s
|
||||||
flash->mtd.write = m25p80_write;
|
flash->mtd._write = m25p80_write;
|
||||||
|
|
||||||
/* prefer "small sector" erase if possible */
|
/* prefer "small sector" erase if possible */
|
||||||
- if (info->flags & SECT_4K) {
|
- if (info->flags & SECT_4K) {
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
--- a/drivers/mtd/devices/m25p80.c
|
--- a/drivers/mtd/devices/m25p80.c
|
||||||
+++ b/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) },
|
{ "en25p32", INFO(0x1c2016, 0, 64 * 1024, 64, 0) },
|
||||||
{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) },
|
{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) },
|
||||||
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },
|
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },
|
||||||
+ { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
|
+ { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
|
||||||
|
|
||||||
/* Intel/Numonyx -- xxxs33b */
|
/* Everspin */
|
||||||
{ "160s33b", INFO(0x898911, 0, 64 * 1024, 32, 0) },
|
{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2) },
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/mtd/mtdpart.c
|
--- a/drivers/mtd/mtdpart.c
|
||||||
+++ b/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)
|
static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
|
||||||
{
|
{
|
||||||
struct mtd_part *part = PART(mtd);
|
struct mtd_part *part = PART(mtd);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/fs/Kconfig
|
--- a/fs/Kconfig
|
||||||
+++ b/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/ocfs2/Kconfig"
|
||||||
source "fs/btrfs/Kconfig"
|
source "fs/btrfs/Kconfig"
|
||||||
source "fs/nilfs2/Kconfig"
|
source "fs/nilfs2/Kconfig"
|
||||||
@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
--- a/fs/Makefile
|
--- a/fs/Makefile
|
||||||
+++ b/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-y += exofs/ # Multiple modules
|
||||||
obj-$(CONFIG_CEPH_FS) += ceph/
|
obj-$(CONFIG_CEPH_FS) += ceph/
|
||||||
obj-$(CONFIG_PSTORE) += pstore/
|
obj-$(CONFIG_PSTORE) += pstore/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/fs/Kconfig
|
--- a/fs/Kconfig
|
||||||
+++ b/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/ocfs2/Kconfig"
|
||||||
source "fs/btrfs/Kconfig"
|
source "fs/btrfs/Kconfig"
|
||||||
source "fs/nilfs2/Kconfig"
|
source "fs/nilfs2/Kconfig"
|
||||||
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
endif # BLOCK
|
endif # BLOCK
|
||||||
|
|
||||||
@@ -201,6 +200,10 @@ source "fs/hfsplus/Kconfig"
|
@@ -205,6 +204,10 @@ source "fs/hfsplus/Kconfig"
|
||||||
source "fs/befs/Kconfig"
|
source "fs/befs/Kconfig"
|
||||||
source "fs/bfs/Kconfig"
|
source "fs/bfs/Kconfig"
|
||||||
source "fs/efs/Kconfig"
|
source "fs/efs/Kconfig"
|
||||||
@ -21,7 +21,7 @@
|
|||||||
source "fs/ubifs/Kconfig"
|
source "fs/ubifs/Kconfig"
|
||||||
--- a/fs/Makefile
|
--- a/fs/Makefile
|
||||||
+++ b/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-y += exofs/ # Multiple modules
|
||||||
obj-$(CONFIG_CEPH_FS) += ceph/
|
obj-$(CONFIG_CEPH_FS) += ceph/
|
||||||
obj-$(CONFIG_PSTORE) += pstore/
|
obj-$(CONFIG_PSTORE) += pstore/
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
+CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
|
+CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
|
||||||
--- a/fs/jffs2/compr.c
|
--- a/fs/jffs2/compr.c
|
||||||
+++ b/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
|
#ifdef CONFIG_JFFS2_LZO
|
||||||
jffs2_lzo_init();
|
jffs2_lzo_init();
|
||||||
#endif
|
#endif
|
||||||
@ -38,7 +38,7 @@
|
|||||||
/* Setting default compression mode */
|
/* Setting default compression mode */
|
||||||
#ifdef CONFIG_JFFS2_CMODE_NONE
|
#ifdef CONFIG_JFFS2_CMODE_NONE
|
||||||
jffs2_compression_mode = JFFS2_COMPR_MODE_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)
|
int jffs2_compressors_exit(void)
|
||||||
{
|
{
|
||||||
/* Unregistering compressors */
|
/* Unregistering compressors */
|
||||||
@ -206,7 +206,7 @@
|
|||||||
+}
|
+}
|
||||||
--- a/fs/jffs2/super.c
|
--- a/fs/jffs2/super.c
|
||||||
+++ b/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_inode) != 68);
|
||||||
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
|
||||||
|
|
||||||
@ -1049,7 +1049,7 @@
|
|||||||
+#endif
|
+#endif
|
||||||
--- a/lib/Kconfig
|
--- a/lib/Kconfig
|
||||||
+++ b/lib/Kconfig
|
+++ b/lib/Kconfig
|
||||||
@@ -118,6 +118,12 @@ config LZO_DECOMPRESS
|
@@ -188,6 +188,12 @@ config LZO_DECOMPRESS
|
||||||
|
|
||||||
source "lib/xz/Kconfig"
|
source "lib/xz/Kconfig"
|
||||||
|
|
||||||
|
@ -1,13 +1,12 @@
|
|||||||
--- a/fs/jffs2/build.c
|
--- a/fs/jffs2/build.c
|
||||||
+++ b/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");
|
dbg_fsbuild("scanned flash completely\n");
|
||||||
jffs2_dbg_dump_block_lists_nolock(c);
|
jffs2_dbg_dump_block_lists_nolock(c);
|
||||||
|
|
||||||
+ if (c->flags & (1 << 7)) {
|
+ if (c->flags & (1 << 7)) {
|
||||||
+ printk("%s(): unlocking the mtd device... ", __func__);
|
+ printk("%s(): unlocking the mtd device... ", __func__);
|
||||||
+ if (c->mtd->unlock)
|
+ mtd_unlock(c->mtd, 0, c->mtd->size);
|
||||||
+ c->mtd->unlock(c->mtd, 0, c->mtd->size);
|
|
||||||
+ printk("done.\n");
|
+ printk("done.\n");
|
||||||
+
|
+
|
||||||
+ printk("%s(): erasing all blocks after the end marker... ", __func__);
|
+ 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. */
|
/* Now scan the directory tree, increasing nlink according to every dirent found. */
|
||||||
--- a/fs/jffs2/scan.c
|
--- a/fs/jffs2/scan.c
|
||||||
+++ b/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 */
|
/* reset summary info for next eraseblock scan */
|
||||||
jffs2_sum_reset_collected(s);
|
jffs2_sum_reset_collected(s);
|
||||||
|
|
||||||
@ -34,7 +33,7 @@
|
|||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
goto out;
|
goto out;
|
||||||
@@ -549,6 +552,17 @@ static int jffs2_scan_eraseblock (struct
|
@@ -556,6 +559,17 @@ static int jffs2_scan_eraseblock (struct
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/crypto/Kconfig
|
--- a/crypto/Kconfig
|
||||||
+++ b/crypto/Kconfig
|
+++ b/crypto/Kconfig
|
||||||
@@ -924,6 +924,13 @@ config CRYPTO_LZO
|
@@ -1008,6 +1008,13 @@ config CRYPTO_LZO
|
||||||
help
|
help
|
||||||
This is the LZO algorithm.
|
This is the LZO algorithm.
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/fs/ubifs/Kconfig
|
--- a/fs/ubifs/Kconfig
|
||||||
+++ b/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_ADVANCED_COMPR
|
||||||
select CRYPTO if UBIFS_FS_LZO
|
select CRYPTO if UBIFS_FS_LZO
|
||||||
select CRYPTO if UBIFS_FS_ZLIB
|
select CRYPTO if UBIFS_FS_ZLIB
|
||||||
@ -11,7 +11,7 @@
|
|||||||
depends on MTD_UBI
|
depends on MTD_UBI
|
||||||
help
|
help
|
||||||
UBIFS is a file system for flash devices which works on top of UBI.
|
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
|
default y
|
||||||
help
|
help
|
||||||
Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
|
Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/fs/ubifs/file.c
|
--- a/fs/ubifs/file.c
|
||||||
+++ b/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,
|
.follow_link = ubifs_follow_link,
|
||||||
.setattr = ubifs_setattr,
|
.setattr = ubifs_setattr,
|
||||||
.getattr = ubifs_getattr,
|
.getattr = ubifs_getattr,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/netfilter/Kconfig
|
--- a/net/netfilter/Kconfig
|
||||||
+++ b/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.
|
To compile it as a module, choose M here. If unsure, say N.
|
||||||
|
|
||||||
@ -30,7 +30,7 @@
|
|||||||
depends on NETFILTER_ADVANCED
|
depends on NETFILTER_ADVANCED
|
||||||
--- a/net/netfilter/Makefile
|
--- a/net/netfilter/Makefile
|
||||||
+++ b/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_SCTP) += xt_sctp.o
|
||||||
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
|
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
|
||||||
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
|
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
|
||||||
@ -2059,7 +2059,7 @@
|
|||||||
+}
|
+}
|
||||||
--- a/net/netfilter/nf_conntrack_core.c
|
--- a/net/netfilter/nf_conntrack_core.c
|
||||||
+++ b/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. */
|
* too. */
|
||||||
nf_ct_remove_expectations(ct);
|
nf_ct_remove_expectations(ct);
|
||||||
|
|
||||||
@ -2091,7 +2091,7 @@
|
|||||||
|
|
||||||
--- a/include/net/netfilter/nf_conntrack.h
|
--- a/include/net/netfilter/nf_conntrack.h
|
||||||
+++ b/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;
|
struct net *ct_net;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -2132,7 +2132,7 @@
|
|||||||
+#endif /* _XT_LAYER7_H */
|
+#endif /* _XT_LAYER7_H */
|
||||||
--- a/include/linux/netfilter/Kbuild
|
--- a/include/linux/netfilter/Kbuild
|
||||||
+++ b/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_helper.h
|
||||||
header-y += xt_iprange.h
|
header-y += xt_iprange.h
|
||||||
header-y += xt_ipvs.h
|
header-y += xt_ipvs.h
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/netfilter/Kconfig
|
--- a/net/netfilter/Kconfig
|
||||||
+++ b/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.
|
If unsure, say N.
|
||||||
|
|
||||||
@ -28,7 +28,7 @@
|
|||||||
config NETFILTER_XT_MATCH_LENGTH
|
config NETFILTER_XT_MATCH_LENGTH
|
||||||
tristate '"length" match support'
|
tristate '"length" match support'
|
||||||
depends on NETFILTER_ADVANCED
|
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.
|
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
|
--- a/include/linux/netfilter/nf_conntrack_sip.h
|
||||||
+++ b/include/linux/netfilter/nf_conntrack_sip.h
|
+++ b/include/linux/netfilter/nf_conntrack_sip.h
|
||||||
@@ -2,12 +2,15 @@
|
@@ -4,12 +4,15 @@
|
||||||
#define __NF_CONNTRACK_SIP_H__
|
|
||||||
#ifdef __KERNEL__
|
#include <net/netfilter/nf_conntrack_expect.h>
|
||||||
|
|
||||||
+#include <linux/types.h>
|
+#include <linux/types.h>
|
||||||
+
|
+
|
||||||
@ -18,25 +18,32 @@
|
|||||||
enum sip_expectation_classes {
|
enum sip_expectation_classes {
|
||||||
--- a/net/ipv4/netfilter/nf_nat_sip.c
|
--- a/net/ipv4/netfilter/nf_nat_sip.c
|
||||||
+++ b/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;
|
enum ip_conntrack_info ctinfo;
|
||||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||||
enum ip_conntrack_dir dir = CTINFO2DIR(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")];
|
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
|
||||||
unsigned int buflen;
|
unsigned int buflen;
|
||||||
__be32 newaddr;
|
__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 &&
|
} else if (ct->tuplehash[dir].tuple.dst.u3.ip == addr->ip &&
|
||||||
ct->tuplehash[dir].tuple.dst.u.udp.port == port) {
|
ct->tuplehash[dir].tuple.dst.u.udp.port == port) {
|
||||||
newaddr = ct->tuplehash[!dir].tuple.src.u3.ip;
|
newaddr = ct->tuplehash[!dir].tuple.src.u3.ip;
|
||||||
- newport = ct->tuplehash[!dir].tuple.src.u.udp.port;
|
- 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;
|
+ ct->tuplehash[!dir].tuple.src.u.udp.port;
|
||||||
} else
|
} else
|
||||||
return 1;
|
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;
|
enum ip_conntrack_info ctinfo;
|
||||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||||
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
||||||
@ -44,19 +51,21 @@
|
|||||||
unsigned int coff, matchoff, matchlen;
|
unsigned int coff, matchoff, matchlen;
|
||||||
enum sip_header_types hdr;
|
enum sip_header_types hdr;
|
||||||
union nf_inet_addr addr;
|
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))
|
!map_sip_addr(skb, dataoff, dptr, datalen, SIP_HDR_TO))
|
||||||
return NF_DROP;
|
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 */
|
+ /* 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;
|
+ struct udphdr *uh;
|
||||||
+
|
+
|
||||||
+ if (!skb_make_writable(skb, skb->len))
|
+ if (!skb_make_writable(skb, skb->len))
|
||||||
+ return NF_DROP;
|
+ return NF_DROP;
|
||||||
+
|
+
|
||||||
+ uh = (struct udphdr *)(skb->data + ip_hdrlen(skb));
|
+ 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))
|
+ if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, 0, 0, NULL, 0))
|
||||||
+ return NF_DROP;
|
+ return NF_DROP;
|
||||||
@ -65,7 +74,7 @@
|
|||||||
return NF_ACCEPT;
|
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;
|
enum ip_conntrack_info ctinfo;
|
||||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||||
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
|
||||||
@ -74,15 +83,18 @@
|
|||||||
u_int16_t port;
|
u_int16_t port;
|
||||||
+ __be16 srcport;
|
+ __be16 srcport;
|
||||||
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
|
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
|
/* If the signalling port matches the connection's source port in the
|
||||||
* original direction, try to use the destination port in the opposite
|
* original direction, try to use the destination port in the opposite
|
||||||
* direction. */
|
* direction. */
|
||||||
- if (exp->tuple.dst.u.udp.port ==
|
- if (exp->tuple.dst.u.udp.port ==
|
||||||
- ct->tuplehash[dir].tuple.src.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;
|
+ ct->tuplehash[dir].tuple.src.u.udp.port;
|
||||||
+ if (exp->tuple.dst.u.udp.port == srcport)
|
+ if (exp->tuple.dst.u.udp.port == srcport)
|
||||||
port = ntohs(ct->tuplehash[!dir].tuple.dst.u.udp.port);
|
port = ntohs(ct->tuplehash[!dir].tuple.dst.u.udp.port);
|
||||||
@ -90,7 +102,7 @@
|
|||||||
port = ntohs(exp->tuple.dst.u.udp.port);
|
port = ntohs(exp->tuple.dst.u.udp.port);
|
||||||
--- a/net/netfilter/nf_conntrack_sip.c
|
--- a/net/netfilter/nf_conntrack_sip.c
|
||||||
+++ b/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;
|
enum ip_conntrack_info ctinfo;
|
||||||
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
|
||||||
@ -100,6 +112,7 @@
|
|||||||
unsigned int cseq, i;
|
unsigned int cseq, i;
|
||||||
+ union nf_inet_addr addr;
|
+ union nf_inet_addr addr;
|
||||||
+ __be16 port;
|
+ __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
|
+ /* 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
|
+ * listen for the response on port 5060. If we are the local
|
||||||
@ -112,7 +125,7 @@
|
|||||||
+ &matchlen, &addr, &port) > 0 &&
|
+ &matchlen, &addr, &port) > 0 &&
|
||||||
+ port != ct->tuplehash[dir].tuple.src.u.udp.port &&
|
+ port != ct->tuplehash[dir].tuple.src.u.udp.port &&
|
||||||
+ nf_inet_addr_cmp(&addr, &ct->tuplehash[dir].tuple.src.u3))
|
+ 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++) {
|
for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
|
||||||
const struct sip_handler *handler;
|
const struct sip_handler *handler;
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
static bool
|
static bool
|
||||||
ip_checkentry(const struct ipt_ip *ip)
|
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
|
static int
|
||||||
@ -59,7 +59,7 @@
|
|||||||
{
|
{
|
||||||
const struct xt_entry_target *t;
|
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;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +68,7 @@
|
|||||||
if (e->target_offset + sizeof(struct xt_entry_target) >
|
if (e->target_offset + sizeof(struct xt_entry_target) >
|
||||||
e->next_offset)
|
e->next_offset)
|
||||||
return -EINVAL;
|
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;
|
const struct xt_table_info *private = table->private;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
const void *loc_cpu_entry;
|
const void *loc_cpu_entry;
|
||||||
@ -76,7 +76,7 @@
|
|||||||
|
|
||||||
counters = alloc_counters(table);
|
counters = alloc_counters(table);
|
||||||
if (IS_ERR(counters))
|
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;
|
ret = -EFAULT;
|
||||||
goto free_counters;
|
goto free_counters;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/ipv4/netfilter/ip_tables.c
|
--- a/net/ipv4/netfilter/ip_tables.c
|
||||||
+++ b/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;
|
return (void *)entry + entry->next_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -34,7 +34,7 @@
|
|||||||
/* Returns one of the generic firewall policies, like NF_ACCEPT. */
|
/* Returns one of the generic firewall policies, like NF_ACCEPT. */
|
||||||
unsigned int
|
unsigned int
|
||||||
ipt_do_table(struct sk_buff *skb,
|
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);
|
ip = ip_hdr(skb);
|
||||||
indev = in ? in->name : nulldevname;
|
indev = in ? in->name : nulldevname;
|
||||||
outdev = out ? out->name : nulldevname;
|
outdev = out ? out->name : nulldevname;
|
||||||
@ -60,7 +60,7 @@
|
|||||||
/* We handle fragments by dealing with the first fragment as
|
/* We handle fragments by dealing with the first fragment as
|
||||||
* if it was a normal packet. All other fragments are treated
|
* if it was a normal packet. All other fragments are treated
|
||||||
* normally, except that they will NEVER match rules that ask
|
* 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.family = NFPROTO_IPV4;
|
||||||
acpar.hooknum = hook;
|
acpar.hooknum = hook;
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
/* "Be conservative in what you do,
|
/* "Be conservative in what you do,
|
||||||
be liberal in what you accept from others."
|
be liberal in what you accept from others."
|
||||||
If it's non-zero, we mark only out of window RST segments as INVALID. */
|
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;
|
s16 receiver_offset;
|
||||||
bool res;
|
bool res;
|
||||||
|
|
||||||
@ -20,7 +20,7 @@
|
|||||||
/*
|
/*
|
||||||
* Get the required data from the packet.
|
* 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,
|
.proc_handler = proc_dointvec,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -32,5 +32,5 @@
|
|||||||
+ },
|
+ },
|
||||||
+ {
|
+ {
|
||||||
.procname = "nf_conntrack_tcp_be_liberal",
|
.procname = "nf_conntrack_tcp_be_liberal",
|
||||||
.data = &nf_ct_tcp_be_liberal,
|
|
||||||
.maxlen = sizeof(unsigned int),
|
.maxlen = sizeof(unsigned int),
|
||||||
|
.mode = 0644,
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/pkt_sched.h
|
--- a/include/linux/pkt_sched.h
|
||||||
+++ b/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;
|
__s32 allot;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -114,7 +114,6 @@
|
|||||||
+
|
+
|
||||||
+#include <linux/module.h>
|
+#include <linux/module.h>
|
||||||
+#include <asm/uaccess.h>
|
+#include <asm/uaccess.h>
|
||||||
+#include <asm/system.h>
|
|
||||||
+#include <linux/bitops.h>
|
+#include <linux/bitops.h>
|
||||||
+#include <linux/types.h>
|
+#include <linux/types.h>
|
||||||
+#include <linux/kernel.h>
|
+#include <linux/kernel.h>
|
||||||
@ -751,7 +750,8 @@
|
|||||||
+ opt.flows = q->depth;
|
+ opt.flows = q->depth;
|
||||||
+ opt.hash_kind = q->hash_kind;
|
+ 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;
|
+ return skb->len;
|
||||||
+
|
+
|
||||||
|
@ -140,7 +140,7 @@
|
|||||||
+module_exit(connmark_cleanup_module);
|
+module_exit(connmark_cleanup_module);
|
||||||
--- a/net/sched/Kconfig
|
--- a/net/sched/Kconfig
|
||||||
+++ b/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
|
To compile this code as a module, choose M here: the
|
||||||
module will be called act_csum.
|
module will be called act_csum.
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
#define PACKET_FANOUT_LB 1
|
#define PACKET_FANOUT_LB 1
|
||||||
--- a/net/packet/af_packet.c
|
--- a/net/packet/af_packet.c
|
||||||
+++ b/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_loss:1;
|
||||||
unsigned int tp_tstamp;
|
unsigned int tp_tstamp;
|
||||||
struct packet_type prot_hook ____cacheline_aligned_in_smp;
|
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
|
#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 sock *sk;
|
||||||
struct sockaddr_pkt *spkt;
|
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
|
* 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;
|
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
|
* 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.
|
* so that this procedure is noop.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!net_eq(dev_net(dev), sock_net(sk)))
|
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;
|
int skb_len = skb->len;
|
||||||
unsigned int snaplen, res;
|
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)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
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 timespec ts;
|
||||||
struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb);
|
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)))
|
if (!net_eq(dev_net(dev), sock_net(sk)))
|
||||||
goto drop;
|
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);
|
spin_lock_init(&po->bind_lock);
|
||||||
mutex_init(&po->pg_vec_lock);
|
mutex_init(&po->pg_vec_lock);
|
||||||
po->prot_hook.func = packet_rcv;
|
po->prot_hook.func = packet_rcv;
|
||||||
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
|
|
||||||
if (sock->type == SOCK_PACKET)
|
if (sock->type == SOCK_PACKET)
|
||||||
po->prot_hook.func = packet_rcv_spkt;
|
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);
|
return fanout_add(sk, val & 0xffff, val >> 16);
|
||||||
}
|
}
|
||||||
@ -116,9 +116,9 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
default:
|
default:
|
||||||
return -ENOPROTOOPT;
|
return -ENOPROTOOPT;
|
||||||
}
|
}
|
||||||
@@ -3262,6 +3276,13 @@ static int packet_getsockopt(struct sock
|
@@ -3270,6 +3284,13 @@ static int packet_getsockopt(struct sock
|
||||||
|
case PACKET_VNET_HDR:
|
||||||
data = &val;
|
val = po->has_vnet_hdr;
|
||||||
break;
|
break;
|
||||||
+ case PACKET_RECV_TYPE:
|
+ case PACKET_RECV_TYPE:
|
||||||
+ if (len > sizeof(unsigned int))
|
+ if (len > sizeof(unsigned int))
|
||||||
@ -128,5 +128,5 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||||||
+ data = &val;
|
+ data = &val;
|
||||||
+ break;
|
+ break;
|
||||||
case PACKET_VERSION:
|
case PACKET_VERSION:
|
||||||
if (len > sizeof(int))
|
val = po->tp_version;
|
||||||
len = sizeof(int);
|
break;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
|
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
|
||||||
static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
|
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_hold_timer,
|
||||||
&brport_attr_flush,
|
&brport_attr_flush,
|
||||||
&brport_attr_hairpin_mode,
|
&brport_attr_hairpin_mode,
|
||||||
@ -55,7 +55,7 @@
|
|||||||
skb = NULL;
|
skb = NULL;
|
||||||
--- a/net/bridge/br_forward.c
|
--- a/net/bridge/br_forward.c
|
||||||
+++ b/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 */
|
/* called with rcu_read_lock */
|
||||||
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
|
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
|
||||||
{
|
{
|
||||||
@ -64,7 +64,7 @@
|
|||||||
if (skb0)
|
if (skb0)
|
||||||
deliver_clone(to, skb, __br_forward);
|
deliver_clone(to, skb, __br_forward);
|
||||||
else
|
else
|
||||||
@@ -164,7 +164,8 @@ out:
|
@@ -165,7 +165,8 @@ out:
|
||||||
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
|
||||||
struct sk_buff *skb0,
|
struct sk_buff *skb0,
|
||||||
void (*__packet_hook)(const struct net_bridge_port *p,
|
void (*__packet_hook)(const struct net_bridge_port *p,
|
||||||
@ -74,7 +74,7 @@
|
|||||||
{
|
{
|
||||||
struct net_bridge_port *p;
|
struct net_bridge_port *p;
|
||||||
struct net_bridge_port *prev;
|
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;
|
prev = NULL;
|
||||||
|
|
||||||
list_for_each_entry_rcu(p, &br->port_list, list) {
|
list_for_each_entry_rcu(p, &br->port_list, list) {
|
||||||
@ -84,7 +84,7 @@
|
|||||||
prev = maybe_deliver(prev, p, skb, __packet_hook);
|
prev = maybe_deliver(prev, p, skb, __packet_hook);
|
||||||
if (IS_ERR(prev))
|
if (IS_ERR(prev))
|
||||||
goto out;
|
goto out;
|
||||||
@@ -195,14 +199,14 @@ out:
|
@@ -196,14 +200,14 @@ out:
|
||||||
/* called with rcu_read_lock */
|
/* called with rcu_read_lock */
|
||||||
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb)
|
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/net/addrconf.h
|
--- a/include/net/addrconf.h
|
||||||
+++ b/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,
|
extern void addrconf_leave_solict(struct inet6_dev *idev,
|
||||||
const struct in6_addr *addr);
|
const struct in6_addr *addr);
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
+ struct in6_addr *saddr);
|
+ struct in6_addr *saddr);
|
||||||
+
|
+
|
||||||
static inline unsigned long addrconf_timeout_fixup(u32 timeout,
|
static inline unsigned long addrconf_timeout_fixup(u32 timeout,
|
||||||
unsigned unit)
|
unsigned int unit)
|
||||||
{
|
{
|
||||||
--- a/net/bridge/Kconfig
|
--- a/net/bridge/Kconfig
|
||||||
+++ b/net/bridge/Kconfig
|
+++ b/net/bridge/Kconfig
|
||||||
@ -32,7 +32,7 @@
|
|||||||
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
|
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
|
||||||
--- a/net/ipv6/addrconf.c
|
--- a/net/ipv6/addrconf.c
|
||||||
+++ b/net/ipv6/addrconf.c
|
+++ b/net/ipv6/addrconf.c
|
||||||
@@ -1103,7 +1103,7 @@ out:
|
@@ -1099,7 +1099,7 @@ out:
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +41,7 @@
|
|||||||
const struct in6_addr *daddr, unsigned int prefs,
|
const struct in6_addr *daddr, unsigned int prefs,
|
||||||
struct in6_addr *saddr)
|
struct in6_addr *saddr)
|
||||||
{
|
{
|
||||||
@@ -1228,7 +1228,6 @@ try_nextdev:
|
@@ -1224,7 +1224,6 @@ try_nextdev:
|
||||||
in6_ifa_put(hiscore->ifa);
|
in6_ifa_put(hiscore->ifa);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -49,7 +49,7 @@
|
|||||||
|
|
||||||
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
|
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
|
||||||
unsigned char banned_flags)
|
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();
|
ipv6_addr_label_rtnl_register();
|
||||||
|
|
||||||
@ -59,7 +59,7 @@
|
|||||||
return 0;
|
return 0;
|
||||||
errout:
|
errout:
|
||||||
rtnl_af_unregister(&inet6_ops);
|
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;
|
struct net_device *dev;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/bridge/br_forward.c
|
--- a/net/bridge/br_forward.c
|
||||||
+++ b/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)
|
int br_forward_finish(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
@ -9,7 +9,7 @@
|
|||||||
br_dev_queue_push_xmit);
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
br_forward_finish);
|
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->dev = to->dev;
|
||||||
skb_forward_csum(skb);
|
skb_forward_csum(skb);
|
||||||
|
|
||||||
@ -48,7 +48,7 @@
|
|||||||
return RX_HANDLER_CONSUMED; /* consumed by filter */
|
return RX_HANDLER_CONSUMED; /* consumed by filter */
|
||||||
} else {
|
} else {
|
||||||
@@ -224,7 +224,7 @@ forward:
|
@@ -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;
|
skb->pkt_type = PACKET_HOST;
|
||||||
|
|
||||||
- NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
|
- NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
|
||||||
@ -58,7 +58,7 @@
|
|||||||
default:
|
default:
|
||||||
--- a/net/bridge/br_multicast.c
|
--- a/net/bridge/br_multicast.c
|
||||||
+++ b/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) {
|
if (port) {
|
||||||
__skb_push(skb, sizeof(struct ethhdr));
|
__skb_push(skb, sizeof(struct ethhdr));
|
||||||
skb->dev = port->dev;
|
skb->dev = port->dev;
|
||||||
@ -69,7 +69,7 @@
|
|||||||
netif_rx(skb);
|
netif_rx(skb);
|
||||||
--- a/net/bridge/br_netfilter.c
|
--- a/net/bridge/br_netfilter.c
|
||||||
+++ b/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) \
|
#define IS_ARP(skb) \
|
||||||
(!vlan_tx_tag_present(skb) && skb->protocol == htons(ETH_P_ARP))
|
(!vlan_tx_tag_present(skb) && skb->protocol == htons(ETH_P_ARP))
|
||||||
|
|
||||||
@ -87,7 +87,7 @@
|
|||||||
if (vlan_tx_tag_present(skb))
|
if (vlan_tx_tag_present(skb))
|
||||||
--- a/net/bridge/br_private.h
|
--- a/net/bridge/br_private.h
|
||||||
+++ b/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 */
|
/* br_netfilter.c */
|
||||||
#ifdef CONFIG_BRIDGE_NETFILTER
|
#ifdef CONFIG_BRIDGE_NETFILTER
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/ppp/pppoe.c
|
--- a/drivers/net/ppp/pppoe.c
|
||||||
+++ b/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;
|
goto end;
|
||||||
|
|
||||||
|
|
||||||
@ -9,7 +9,7 @@
|
|||||||
0, GFP_KERNEL);
|
0, GFP_KERNEL);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
error = -ENOMEM;
|
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. */
|
/* Reserve space for headers. */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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)
|
#if defined(CONFIG_WLAN) || IS_ENABLED(CONFIG_AX25)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/net/netlink/af_netlink.c
|
--- a/net/netlink/af_netlink.c
|
||||||
+++ b/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)
|
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/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)
|
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
|
||||||
*/
|
*/
|
||||||
#ifndef NET_SKB_PAD
|
#ifndef NET_SKB_PAD
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
+
|
+
|
||||||
comment "MII PHY device drivers"
|
comment "MII PHY device drivers"
|
||||||
|
|
||||||
config MARVELL_PHY
|
config AMD_PHY
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -3,6 +3,7 @@
|
@@ -3,6 +3,7 @@
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/phy.c
|
--- a/drivers/net/phy/phy.c
|
||||||
+++ b/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);
|
EXPORT_SYMBOL(phy_ethtool_gset);
|
||||||
|
|
||||||
@ -51,7 +51,7 @@
|
|||||||
/**
|
/**
|
||||||
* phy_mii_ioctl - generic PHY MII ioctl interface
|
* phy_mii_ioctl - generic PHY MII ioctl interface
|
||||||
* @phydev: the phy_device struct
|
* @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;
|
int idx;
|
||||||
|
|
||||||
idx = phy_find_setting(phydev->speed, phydev->duplex);
|
idx = phy_find_setting(phydev->speed, phydev->duplex);
|
||||||
@ -62,7 +62,7 @@
|
|||||||
idx = phy_find_valid(idx, phydev->supported);
|
idx = phy_find_valid(idx, phydev->supported);
|
||||||
--- a/include/linux/phy.h
|
--- a/include/linux/phy.h
|
||||||
+++ b/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);
|
void phy_stop_machine(struct phy_device *phydev);
|
||||||
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
|
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
|
||||||
int phy_ethtool_gset(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
|
--- a/include/linux/phy.h
|
||||||
+++ b/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);
|
int (*config_aneg)(struct phy_device *phydev);
|
||||||
|
|
||||||
@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
--- a/drivers/net/phy/phy_device.c
|
--- a/drivers/net/phy/phy_device.c
|
||||||
+++ b/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;
|
int status;
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
--- a/drivers/net/phy/phy.c
|
--- a/drivers/net/phy/phy.c
|
||||||
+++ b/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;
|
int retval;
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
/**
|
/**
|
||||||
* mdiobus_alloc_size - allocate a mii_bus structure
|
* mdiobus_alloc_size - allocate a mii_bus structure
|
||||||
* @size: extra amount of memory to allocate for private storage.
|
* @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);
|
EXPORT_SYMBOL(mdiobus_free);
|
||||||
|
|
||||||
@ -45,7 +45,7 @@
|
|||||||
phy_device_free(phydev);
|
phy_device_free(phydev);
|
||||||
--- a/include/linux/phy.h
|
--- a/include/linux/phy.h
|
||||||
+++ b/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);
|
void mdio_bus_exit(void);
|
||||||
|
|
||||||
extern struct bus_type mdio_bus_type;
|
extern struct bus_type mdio_bus_type;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -106,6 +106,13 @@ config MICREL_PHY
|
@@ -116,6 +116,13 @@ config MICREL_PHY
|
||||||
---help---
|
---help---
|
||||||
Supports the KSZ9021, VSC8201, KS8001 PHYs.
|
Supports the KSZ9021, VSC8201, KS8001 PHYs.
|
||||||
|
|
||||||
@ -16,9 +16,9 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -16,6 +16,7 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
|
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
||||||
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
|
||||||
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||||
|
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
|
||||||
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
||||||
+obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
+obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/netdevice.h
|
--- a/include/linux/netdevice.h
|
||||||
+++ b/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 net_device_ops *netdev_ops;
|
||||||
const struct ethtool_ops *ethtool_ops;
|
const struct ethtool_ops *ethtool_ops;
|
||||||
|
|
||||||
@ -12,7 +12,7 @@
|
|||||||
/* Hardware header description */
|
/* Hardware header description */
|
||||||
const struct header_ops *header_ops;
|
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 */
|
void *ax25_ptr; /* AX.25 specific data */
|
||||||
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
|
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
|
||||||
assign before registering */
|
assign before registering */
|
||||||
@ -34,21 +34,21 @@
|
|||||||
#define IF_GET_IFACE 0x0001 /* for querying only */
|
#define IF_GET_IFACE 0x0001 /* for querying only */
|
||||||
--- a/include/linux/skbuff.h
|
--- a/include/linux/skbuff.h
|
||||||
+++ b/include/linux/skbuff.h
|
+++ b/include/linux/skbuff.h
|
||||||
@@ -1661,6 +1661,10 @@ extern struct sk_buff *dev_alloc_skb(uns
|
@@ -1656,6 +1656,10 @@ static inline int pskb_trim(struct sk_bu
|
||||||
extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
|
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
|
||||||
unsigned int length, gfp_t gfp_mask);
|
}
|
||||||
|
|
||||||
+extern struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
+extern struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
||||||
+ unsigned int length, gfp_t gfp);
|
+ unsigned int length, gfp_t gfp);
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
/**
|
/**
|
||||||
* netdev_alloc_skb - allocate an skbuff for rx on a specific device
|
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
|
||||||
* @dev: network device to receive on
|
* @skb: buffer to alter
|
||||||
@@ -1680,16 +1684,6 @@ static inline struct sk_buff *netdev_all
|
@@ -1758,16 +1762,6 @@ static inline struct sk_buff *dev_alloc_
|
||||||
return __netdev_alloc_skb(dev, length, GFP_ATOMIC);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
-static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
-static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
|
||||||
- unsigned int length, gfp_t gfp)
|
- unsigned int length, gfp_t gfp)
|
||||||
-{
|
-{
|
||||||
@ -79,7 +79,7 @@
|
|||||||
help
|
help
|
||||||
--- a/net/core/dev.c
|
--- a/net/core/dev.c
|
||||||
+++ b/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)
|
if (rc == NETDEV_TX_OK)
|
||||||
txq_trans_update(txq);
|
txq_trans_update(txq);
|
||||||
return rc;
|
return rc;
|
||||||
@@ -2289,9 +2299,19 @@ gso:
|
@@ -2265,9 +2275,19 @@ gso:
|
||||||
if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
|
if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
|
||||||
skb_dst_drop(nskb);
|
skb_dst_drop(nskb);
|
||||||
|
|
||||||
@ -127,7 +127,7 @@
|
|||||||
goto out_kfree_gso_skb;
|
goto out_kfree_gso_skb;
|
||||||
--- a/net/core/skbuff.c
|
--- a/net/core/skbuff.c
|
||||||
+++ b/net/core/skbuff.c
|
+++ b/net/core/skbuff.c
|
||||||
@@ -58,6 +58,7 @@
|
@@ -60,6 +60,7 @@
|
||||||
#include <linux/scatterlist.h>
|
#include <linux/scatterlist.h>
|
||||||
#include <linux/errqueue.h>
|
#include <linux/errqueue.h>
|
||||||
#include <linux/prefetch.h>
|
#include <linux/prefetch.h>
|
||||||
@ -135,7 +135,7 @@
|
|||||||
|
|
||||||
#include <net/protocol.h>
|
#include <net/protocol.h>
|
||||||
#include <net/dst.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);
|
EXPORT_SYMBOL(__netdev_alloc_skb);
|
||||||
|
|
||||||
@ -156,11 +156,11 @@
|
|||||||
+EXPORT_SYMBOL(__netdev_alloc_skb_ip_align);
|
+EXPORT_SYMBOL(__netdev_alloc_skb_ip_align);
|
||||||
+
|
+
|
||||||
void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
|
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
|
--- a/net/ethernet/eth.c
|
||||||
+++ b/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;
|
struct ethhdr *eth;
|
||||||
|
|
||||||
skb->dev = dev;
|
skb->dev = dev;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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.
|
Currently supports the ADM6996FC and ADM6996M switches.
|
||||||
Support for FC is very limited.
|
Support for FC is very limited.
|
||||||
|
|
||||||
@ -13,8 +13,8 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
|
@@ -18,6 +18,7 @@ obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
||||||
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
|
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
|
||||||
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
|
||||||
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||||
+obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
+obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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"
|
tristate "Driver for Marvell 88E6060 switches"
|
||||||
select ETHERNET_PACKET_MANGLE
|
select ETHERNET_PACKET_MANGLE
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_ICPLUS_PHY) += icplus.o
|
||||||
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
|
||||||
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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"
|
tristate "Driver for IC+ IP17xx switches"
|
||||||
select SWCONFIG
|
select SWCONFIG
|
||||||
|
|
||||||
@ -14,7 +14,7 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_MVSWITCH_PHY) += mvswitch.o
|
||||||
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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 ETHERNET_PACKET_MANGLE
|
||||||
select SWCONFIG
|
select SWCONFIG
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_IP17XX_PHY) += ip17xx.o
|
||||||
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
obj-$(CONFIG_REALTEK_PHY) += realtek.o
|
||||||
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -168,6 +168,30 @@ config MDIO_OCTEON
|
@@ -197,6 +197,30 @@ config MDIO_BUS_MUX_GPIO
|
||||||
|
several child MDIO busses to a parent bus. Child bus
|
||||||
If in doubt, say Y.
|
selection is under the control of GPIO lines.
|
||||||
|
|
||||||
+config RTL8366_SMI
|
+config RTL8366_SMI
|
||||||
+ tristate "Driver for the RTL8366 SMI interface"
|
+ tristate "Driver for the RTL8366 SMI interface"
|
||||||
@ -33,7 +33,7 @@
|
|||||||
config MICREL_KS8995MA
|
config MICREL_KS8995MA
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_REALTEK_PHY) += realtek.o
|
||||||
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
obj-$(CONFIG_AR8216_PHY) += ar8216.o
|
||||||
obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
|
obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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"
|
tristate "Driver for the Realtek RTL8366RB switch"
|
||||||
select SWCONFIG
|
select SWCONFIG
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
endif # PHYLIB
|
endif # PHYLIB
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_RTL8366_SMI) += rtl8366_smi.o
|
||||||
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
|
||||||
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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"
|
tristate "Driver for Realtek RTL8306S switches"
|
||||||
select SWCONFIG
|
select SWCONFIG
|
||||||
|
|
||||||
@ -14,7 +14,7 @@
|
|||||||
depends on PHYLIB=y
|
depends on PHYLIB=y
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_RTL8366RB_PHY) += rtl8366rb.o
|
||||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||||
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/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"
|
tristate "Driver for the Realtek RTL8367R/M switches"
|
||||||
select SWCONFIG
|
select SWCONFIG
|
||||||
|
|
||||||
@ -13,7 +13,7 @@
|
|||||||
endif # PHYLIB
|
endif # PHYLIB
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/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_RTL8366S_PHY) += rtl8366s.o
|
||||||
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
|
||||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/net/phy/Kconfig
|
--- a/drivers/net/phy/Kconfig
|
||||||
+++ b/drivers/net/phy/Kconfig
|
+++ b/drivers/net/phy/Kconfig
|
||||||
@@ -206,3 +206,8 @@ endif # PHYLIB
|
@@ -239,3 +239,8 @@ endif # PHYLIB
|
||||||
config MICREL_KS8995MA
|
config MICREL_KS8995MA
|
||||||
tristate "Micrel KS8995MA 5-ports 10/100 managed Ethernet switch"
|
tristate "Micrel KS8995MA 5-ports 10/100 managed Ethernet switch"
|
||||||
depends on SPI
|
depends on SPI
|
||||||
@ -11,8 +11,8 @@
|
|||||||
+ select ETHERNET_PACKET_MANGLE
|
+ select ETHERNET_PACKET_MANGLE
|
||||||
--- a/drivers/net/phy/Makefile
|
--- a/drivers/net/phy/Makefile
|
||||||
+++ b/drivers/net/phy/Makefile
|
+++ b/drivers/net/phy/Makefile
|
||||||
@@ -28,6 +28,7 @@ obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb
|
@@ -30,6 +30,7 @@ obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
||||||
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
|
obj-$(CONFIG_RTL8367B_PHY) += rtl8367b.o
|
||||||
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
|
||||||
obj-$(CONFIG_MICREL_PHY) += micrel.o
|
obj-$(CONFIG_MICREL_PHY) += micrel.o
|
||||||
+obj-$(CONFIG_PSB6970_PHY) += psb6970.o
|
+obj-$(CONFIG_PSB6970_PHY) += psb6970.o
|
||||||
|
@ -64,7 +64,7 @@
|
|||||||
#endif /* HOSTAP_H */
|
#endif /* HOSTAP_H */
|
||||||
--- a/drivers/net/wireless/hostap/hostap_hw.c
|
--- a/drivers/net/wireless/hostap/hostap_hw.c
|
||||||
+++ b/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);
|
prism2_hw_reset(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/pci/Kconfig
|
--- a/drivers/pci/Kconfig
|
||||||
+++ b/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
|
The PCI device frontend driver allows the kernel to import arbitrary
|
||||||
PCI devices from a PCI backend to support PCI driver domains.
|
PCI devices from a PCI backend to support PCI driver domains.
|
||||||
|
|
||||||
@ -15,15 +15,15 @@
|
|||||||
default y
|
default y
|
||||||
--- a/drivers/pci/quirks.c
|
--- a/drivers/pci/quirks.c
|
||||||
+++ b/drivers/pci/quirks.c
|
+++ b/drivers/pci/quirks.c
|
||||||
@@ -105,6 +105,7 @@ static void __devinit quirk_mmio_always_
|
@@ -44,6 +44,7 @@ static void __devinit quirk_mmio_always_
|
||||||
}
|
DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
|
||||||
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, quirk_mmio_always_on);
|
PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
|
||||||
|
|
||||||
+#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
|
+#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
|
||||||
/* The Mellanox Tavor device gives false positive parity errors
|
/* The Mellanox Tavor device gives false positive parity errors
|
||||||
* Mark this device with a broken_parity_status, to allow
|
* Mark this device with a broken_parity_status, to allow
|
||||||
* PCI scanning code to "skip" this now blacklisted device.
|
* 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);
|
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 */
|
/* Enable 1k I/O space granularity on the Intel P64H2 */
|
||||||
static void __devinit quirk_p64h2_1k_io(struct pci_dev *dev)
|
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);
|
quirk_msi_intx_disable_bug);
|
||||||
|
|
||||||
#endif /* CONFIG_PCI_MSI */
|
#endif /* CONFIG_PCI_MSI */
|
||||||
+#endif /* !CONFIG_PCI_DISABLE_COMMON_QUIRKS */
|
+#endif /* !CONFIG_PCI_DISABLE_COMMON_QUIRKS */
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
--- a/drivers/usb/host/pci-quirks.c
|
--- a/drivers/usb/host/pci-quirks.c
|
||||||
+++ b/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);
|
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)
|
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
|
||||||
{
|
{
|
||||||
u16 cmd;
|
u16 cmd;
|
||||||
@@ -928,3 +930,5 @@ static void __devinit quirk_usb_early_ha
|
@@ -964,3 +966,4 @@ static void __devinit quirk_usb_early_ha
|
||||||
pci_disable_device(pdev);
|
|
||||||
}
|
}
|
||||||
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
|
+#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
|
--- a/drivers/usb/core/usb.c
|
||||||
+++ b/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);
|
EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor);
|
||||||
|
|
||||||
@ -74,7 +74,7 @@
|
|||||||
* @dev: device the buffer will be used with
|
* @dev: device the buffer will be used with
|
||||||
--- a/include/linux/usb.h
|
--- a/include/linux/usb.h
|
||||||
+++ b/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 int usb_reset_device(struct usb_device *dev);
|
||||||
extern void usb_queue_reset_device(struct usb_interface *dev);
|
extern void usb_queue_reset_device(struct usb_interface *dev);
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/drivers/leds/Kconfig
|
--- a/drivers/leds/Kconfig
|
||||||
+++ b/drivers/leds/Kconfig
|
+++ b/drivers/leds/Kconfig
|
||||||
@@ -480,4 +480,8 @@ config LEDS_TRIGGER_DEFAULT_ON
|
@@ -537,4 +537,8 @@ config LEDS_TRIGGER_TRANSIENT
|
||||||
comment "iptables trigger is under Netfilter config (LED target)"
|
GPIO/PWM based hardware.
|
||||||
depends on LEDS_TRIGGERS
|
If unsure, say Y.
|
||||||
|
|
||||||
+config LEDS_TRIGGER_MORSE
|
+config LEDS_TRIGGER_MORSE
|
||||||
+ tristate "LED Morse Trigger"
|
+ tristate "LED Morse Trigger"
|
||||||
@ -11,10 +11,10 @@
|
|||||||
endif # NEW_LEDS
|
endif # NEW_LEDS
|
||||||
--- a/drivers/leds/Makefile
|
--- a/drivers/leds/Makefile
|
||||||
+++ b/drivers/leds/Makefile
|
+++ b/drivers/leds/Makefile
|
||||||
@@ -57,3 +57,4 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) +=
|
@@ -63,3 +63,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
|
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
|
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.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
|
+obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
|
||||||
--- a/drivers/leds/ledtrig-morse.c
|
--- a/drivers/leds/ledtrig-morse.c
|
||||||
+++ b/drivers/leds/ledtrig-morse.c
|
+++ b/drivers/leds/ledtrig-morse.c
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/leds/Kconfig
|
--- a/drivers/leds/Kconfig
|
||||||
+++ b/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"
|
tristate "LED Morse Trigger"
|
||||||
depends on LEDS_TRIGGERS
|
depends on LEDS_TRIGGERS
|
||||||
|
|
||||||
@ -14,9 +14,9 @@
|
|||||||
endif # NEW_LEDS
|
endif # NEW_LEDS
|
||||||
--- a/drivers/leds/Makefile
|
--- a/drivers/leds/Makefile
|
||||||
+++ b/drivers/leds/Makefile
|
+++ b/drivers/leds/Makefile
|
||||||
@@ -58,3 +58,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
|
@@ -64,3 +64,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
|
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.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
|
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
|
||||||
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
||||||
--- a/drivers/leds/ledtrig-netdev.c
|
--- a/drivers/leds/ledtrig-netdev.c
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/leds/Kconfig
|
--- a/drivers/leds/Kconfig
|
||||||
+++ b/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.
|
This allows LEDs to be controlled by network device activity.
|
||||||
If unsure, say Y.
|
If unsure, say Y.
|
||||||
|
|
||||||
@ -14,8 +14,8 @@
|
|||||||
endif # NEW_LEDS
|
endif # NEW_LEDS
|
||||||
--- a/drivers/leds/Makefile
|
--- a/drivers/leds/Makefile
|
||||||
+++ b/drivers/leds/Makefile
|
+++ b/drivers/leds/Makefile
|
||||||
@@ -59,3 +59,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
|
@@ -65,3 +65,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) +=
|
||||||
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_MORSE) += ledtrig-morse.o
|
||||||
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
|
||||||
+obj-$(CONFIG_LEDS_TRIGGER_USBDEV) += ledtrig-usbdev.o
|
+obj-$(CONFIG_LEDS_TRIGGER_USBDEV) += ledtrig-usbdev.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/rtc/Kconfig
|
--- a/drivers/rtc/Kconfig
|
||||||
+++ b/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
|
If you say yes here you get support for the RTC subsystem of the
|
||||||
NUC910/NUC920 used in embedded systems.
|
NUC910/NUC920 used in embedded systems.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
config RTC_DRV_DAVINCI
|
config RTC_DRV_DAVINCI
|
||||||
--- a/drivers/rtc/Makefile
|
--- a/drivers/rtc/Makefile
|
||||||
+++ b/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_RS5C313) += rtc-rs5c313.o
|
||||||
obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o
|
obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o
|
||||||
obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o
|
obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/rtc/Kconfig
|
--- a/drivers/rtc/Kconfig
|
||||||
+++ b/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
|
This driver can also be built as a module. If so, the module
|
||||||
will be called rtc-rv3029c2.
|
will be called rtc-rv3029c2.
|
||||||
|
|
||||||
@ -18,7 +18,7 @@
|
|||||||
comment "SPI RTC drivers"
|
comment "SPI RTC drivers"
|
||||||
--- a/drivers/rtc/Makefile
|
--- a/drivers/rtc/Makefile
|
||||||
+++ b/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_PL031) += rtc-pl031.o
|
||||||
obj-$(CONFIG_RTC_DRV_PM8XXX) += rtc-pm8xxx.o
|
obj-$(CONFIG_RTC_DRV_PM8XXX) += rtc-pm8xxx.o
|
||||||
obj-$(CONFIG_RTC_DRV_PS3) += rtc-ps3.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");
|
+MODULE_LICENSE("GPL v2");
|
||||||
--- a/drivers/spi/Kconfig
|
--- a/drivers/spi/Kconfig
|
||||||
+++ b/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
|
GPIO operations, you should be able to leverage that for better
|
||||||
speed with a custom version of this driver; see the source code.
|
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
|
depends on ARCH_MXC
|
||||||
--- a/drivers/spi/Makefile
|
--- a/drivers/spi/Makefile
|
||||||
+++ b/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_ESPI) += spi-fsl-espi.o
|
||||||
obj-$(CONFIG_SPI_FSL_SPI) += spi-fsl-spi.o
|
obj-$(CONFIG_SPI_FSL_SPI) += spi-fsl-spi.o
|
||||||
obj-$(CONFIG_SPI_GPIO) += spi-gpio.o
|
obj-$(CONFIG_SPI_GPIO) += spi-gpio.o
|
||||||
|
@ -612,7 +612,7 @@
|
|||||||
+module_exit(gpiommc_modexit);
|
+module_exit(gpiommc_modexit);
|
||||||
--- a/drivers/mmc/host/Kconfig
|
--- a/drivers/mmc/host/Kconfig
|
||||||
+++ b/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
|
This provides support for the SDHI SD/SDIO controller found in
|
||||||
SuperH and ARM SH-Mobile SoCs
|
SuperH and ARM SH-Mobile SoCs
|
||||||
|
|
||||||
@ -646,14 +646,14 @@
|
|||||||
depends on PCI
|
depends on PCI
|
||||||
--- a/drivers/mmc/host/Makefile
|
--- a/drivers/mmc/host/Makefile
|
||||||
+++ b/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_SDHI) += sh_mobile_sdhi.o
|
||||||
obj-$(CONFIG_MMC_CB710) += cb710-mmc.o
|
obj-$(CONFIG_MMC_CB710) += cb710-mmc.o
|
||||||
obj-$(CONFIG_MMC_VIA_SDMMC) += via-sdmmc.o
|
obj-$(CONFIG_MMC_VIA_SDMMC) += via-sdmmc.o
|
||||||
+obj-$(CONFIG_GPIOMMC) += gpiommc.o
|
+obj-$(CONFIG_GPIOMMC) += gpiommc.o
|
||||||
obj-$(CONFIG_SDH_BFIN) += bfin_sdh.o
|
obj-$(CONFIG_SDH_BFIN) += bfin_sdh.o
|
||||||
obj-$(CONFIG_MMC_DW) += dw_mmc.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
|
--- /dev/null
|
||||||
+++ b/include/linux/mmc/gpiommc.h
|
+++ b/include/linux/mmc/gpiommc.h
|
||||||
@@ -0,0 +1,71 @@
|
@@ -0,0 +1,71 @@
|
||||||
@ -830,7 +830,7 @@
|
|||||||
+be done automatically.
|
+be done automatically.
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/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
|
S: Odd Fixes
|
||||||
F: drivers/tty/hvc/
|
F: drivers/tty/hvc/
|
||||||
|
|
||||||
@ -841,4 +841,4 @@
|
|||||||
+
|
+
|
||||||
HARDWARE MONITORING
|
HARDWARE MONITORING
|
||||||
M: Jean Delvare <khali@linux-fr.org>
|
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"
|
source "drivers/power/Kconfig"
|
||||||
--- a/drivers/Makefile
|
--- a/drivers/Makefile
|
||||||
+++ b/drivers/Makefile
|
+++ b/drivers/Makefile
|
||||||
@@ -8,6 +8,7 @@
|
@@ -10,6 +10,7 @@ obj-y += pinctrl/
|
||||||
# GPIO must come after pinctrl as gpios may need to mux pins etc
|
|
||||||
obj-y += pinctrl/
|
|
||||||
obj-y += gpio/
|
obj-y += gpio/
|
||||||
+obj-$(CONFIG_GENERIC_PWM) += pwm/
|
obj-y += pwm/
|
||||||
obj-$(CONFIG_PCI) += pci/
|
obj-$(CONFIG_PCI) += pci/
|
||||||
|
+obj-$(CONFIG_GENERIC_PWM) += pwm/
|
||||||
obj-$(CONFIG_PARISC) += parisc/
|
obj-$(CONFIG_PARISC) += parisc/
|
||||||
obj-$(CONFIG_RAPIDIO) += rapidio/
|
obj-$(CONFIG_RAPIDIO) += rapidio/
|
||||||
|
obj-y += video/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/drivers/hwmon/Kconfig
|
--- a/drivers/hwmon/Kconfig
|
||||||
+++ b/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
|
This driver can also be built as a module. If so, the module
|
||||||
will be called gl520sm.
|
will be called gl520sm.
|
||||||
|
|
||||||
@ -15,10 +15,10 @@
|
|||||||
+
|
+
|
||||||
config SENSORS_GPIO_FAN
|
config SENSORS_GPIO_FAN
|
||||||
tristate "GPIO fan"
|
tristate "GPIO fan"
|
||||||
depends on GENERIC_GPIO
|
depends on GPIOLIB
|
||||||
--- a/drivers/hwmon/Makefile
|
--- a/drivers/hwmon/Makefile
|
||||||
+++ b/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_W83L786NG) += w83l786ng.o
|
||||||
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
|
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
|
||||||
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o
|
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/include/linux/slab.h
|
--- a/include/linux/slab.h
|
||||||
+++ b/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
|
* to do various tricks to work around compiler limitations in order to
|
||||||
* ensure proper constant folding.
|
* ensure proper constant folding.
|
||||||
*/
|
*/
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/lib/kobject_uevent.c
|
--- a/lib/kobject_uevent.c
|
||||||
+++ b/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",
|
[KOBJ_OFFLINE] = "offline",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
#endif /* _KOBJECT_H_ */
|
#endif /* _KOBJECT_H_ */
|
||||||
--- a/lib/kobject_uevent.c
|
--- a/lib/kobject_uevent.c
|
||||||
+++ b/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);
|
EXPORT_SYMBOL_GPL(add_uevent_var);
|
||||||
|
|
||||||
#if defined(CONFIG_NET)
|
#if defined(CONFIG_NET)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/init/main.c
|
--- a/init/main.c
|
||||||
+++ b/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 */
|
/* Open the /dev/console on the rootfs, this should never fail */
|
||||||
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/init/main.c
|
--- a/init/main.c
|
||||||
+++ b/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 "
|
printk(KERN_WARNING "Failed to execute %s. Attempting "
|
||||||
"defaults...\n", execute_command);
|
"defaults...\n", execute_command);
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
+#endif
|
+#endif
|
||||||
--- a/init/Kconfig
|
--- a/init/Kconfig
|
||||||
+++ b/init/Kconfig
|
+++ b/init/Kconfig
|
||||||
@@ -926,6 +926,10 @@ config RELAY
|
@@ -1105,6 +1105,10 @@ config RELAY
|
||||||
|
|
||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
depends on BROKEN || !FRV
|
depends on BROKEN || !FRV
|
||||||
--- a/kernel/Makefile
|
--- a/kernel/Makefile
|
||||||
+++ b/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_PADATA) += padata.o
|
||||||
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
|
||||||
obj-$(CONFIG_JUMP_LABEL) += jump_label.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_memory_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock;
|
||||||
static struct memblock_region memblock_reserved_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);
|
memblock_set_region_node(rgn, nid);
|
||||||
type->cnt++;
|
type->cnt++;
|
||||||
type->total_size += size;
|
type->total_size += size;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/crypto/Kconfig
|
--- a/crypto/Kconfig
|
||||||
+++ b/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"
|
source "drivers/crypto/Kconfig"
|
||||||
|
|
||||||
endif # if CRYPTO
|
endif # if CRYPTO
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
--- a/drivers/char/random.c
|
--- a/drivers/char/random.c
|
||||||
+++ b/drivers/char/random.c
|
+++ b/drivers/char/random.c
|
||||||
@@ -131,6 +131,9 @@
|
@@ -139,6 +139,9 @@
|
||||||
* void add_interrupt_randomness(int irq, int irq_flags);
|
* that might otherwise be identical and have very little entropy
|
||||||
* void add_disk_randomness(struct gendisk *disk);
|
* available to them (particularly common in the embedded world).
|
||||||
*
|
*
|
||||||
+ * void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
|
+ * void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
|
||||||
+ * int random_input_wait(void);
|
+ * int random_input_wait(void);
|
||||||
@ -24,7 +24,7 @@
|
|||||||
* All of these routines try to estimate how many bits of randomness a
|
* All of these routines try to estimate how many bits of randomness a
|
||||||
* particular randomness source. They do this by keeping track of the
|
* particular randomness source. They do this by keeping track of the
|
||||||
* first and second order deltas of the event timings.
|
* 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
|
#endif
|
||||||
|
|
||||||
@ -90,7 +90,7 @@
|
|||||||
* Entropy extraction routines
|
* Entropy extraction routines
|
||||||
--- a/fs/fcntl.c
|
--- a/fs/fcntl.c
|
||||||
+++ b/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;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
--- a/mm/shmem.c
|
--- a/mm/shmem.c
|
||||||
+++ b/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 */
|
/* common code */
|
||||||
|
|
||||||
@ -17,7 +17,7 @@
|
|||||||
/**
|
/**
|
||||||
* shmem_file_setup - get an unlinked file living in tmpfs
|
* shmem_file_setup - get an unlinked file living in tmpfs
|
||||||
* @name: name for dentry (to be seen in /proc/<pid>/maps
|
* @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))
|
if (IS_ERR(file))
|
||||||
return PTR_ERR(file);
|
return PTR_ERR(file);
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
--- a/fs/file.c
|
--- a/fs/file.c
|
||||||
+++ b/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 */
|
/* All good, so we try */
|
||||||
return expand_fdtable(files, nr);
|
return expand_fdtable(files, nr);
|
||||||
}
|
}
|
||||||
@ -43,7 +43,7 @@
|
|||||||
{
|
{
|
||||||
--- a/kernel/exit.c
|
--- a/kernel/exit.c
|
||||||
+++ b/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;
|
return files;
|
||||||
}
|
}
|
||||||
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
void put_files_struct(struct files_struct *files)
|
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();
|
rcu_read_unlock();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@
|
|||||||
{
|
{
|
||||||
--- a/kernel/sched/core.c
|
--- a/kernel/sched/core.c
|
||||||
+++ b/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) ||
|
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
|
||||||
capable(CAP_SYS_NICE));
|
capable(CAP_SYS_NICE));
|
||||||
}
|
}
|
||||||
@ -71,25 +71,17 @@
|
|||||||
|
|
||||||
--- a/mm/memory.c
|
--- a/mm/memory.c
|
||||||
+++ b/mm/memory.c
|
+++ b/mm/memory.c
|
||||||
@@ -1412,6 +1412,7 @@ unsigned long zap_page_range(struct vm_a
|
@@ -1408,6 +1408,7 @@ void zap_page_range(struct vm_area_struc
|
||||||
tlb_finish_mmu(&tlb, address, end);
|
mmu_notifier_invalidate_range_end(mm, start, end);
|
||||||
return end;
|
tlb_finish_mmu(&tlb, start, end);
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(zap_page_range);
|
+EXPORT_SYMBOL_GPL(zap_page_range);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* zap_vma_ptes - remove ptes mapping the vma
|
* zap_page_range_single - remove user pages in a given range
|
||||||
@@ -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,
|
|
||||||
--- a/mm/vmalloc.c
|
--- a/mm/vmalloc.c
|
||||||
+++ b/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);
|
vunmap_page_range(addr, end);
|
||||||
flush_tlb_kernel_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)
|
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,
|
return __get_vm_area_node(size, 1, flags, VMALLOC_START, VMALLOC_END,
|
||||||
-1, GFP_KERNEL, __builtin_return_address(0));
|
-1, GFP_KERNEL, __builtin_return_address(0));
|
||||||
}
|
}
|
||||||
+EXPORT_SYMBOL_GPL(get_vm_area);
|
+EXPORT_SYMBOL_GPL(get_vm_area);
|
||||||
|
|
||||||
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
|
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
|
||||||
void *caller)
|
const void *caller)
|
||||||
--- a/include/linux/mm.h
|
--- a/include/linux/shmem_fs.h
|
||||||
+++ b/include/linux/mm.h
|
+++ b/include/linux/shmem_fs.h
|
||||||
@@ -872,6 +872,7 @@ extern bool skip_free_areas_node(unsigne
|
@@ -46,6 +46,8 @@ extern int shmem_init(void);
|
||||||
|
extern int shmem_fill_super(struct super_block *sb, void *data, int silent);
|
||||||
int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
extern struct file *shmem_file_setup(const char *name,
|
||||||
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
|
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 void shmem_set_file(struct vm_area_struct *vma, struct file *file);
|
||||||
|
extern int shmem_zero_setup(struct vm_area_struct *);
|
||||||
extern int can_do_mlock(void);
|
extern int shmem_lock(struct file *file, int lock, struct user_struct *user);
|
||||||
|
extern void shmem_unlock_mapping(struct address_space *mapping);
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user