1
0
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:
florian 2012-10-24 13:05:22 +00:00
parent 8b3c85ca82
commit eb0c020062
104 changed files with 4209 additions and 806 deletions

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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