make all 3.6 patches apply and build

SVN-Revision: 33911
v19.07.3_mercusys_ac12_duma
Florian Fainelli 12 years ago
parent 4eda974038
commit 7e856e5a97

File diff suppressed because it is too large Load Diff

@ -1,6 +1,6 @@
--- a/drivers/net/usb/hso.c
+++ b/drivers/net/usb/hso.c
@@ -476,8 +476,10 @@ static const struct usb_device_id hso_id
@@ -468,8 +468,10 @@ static const struct usb_device_id hso_id
{USB_DEVICE(0x0af0, 0x8400)},
{USB_DEVICE(0x0af0, 0x8600)},
{USB_DEVICE(0x0af0, 0x8800)},

@ -44,11 +44,9 @@ To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2fd2bc9..fa2c2c2 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -237,7 +237,11 @@ static inline void TCP_ECN_check_ce(struct tcp_sock *tp, const struct sk_buff *s
@@ -237,7 +237,11 @@ static inline void TCP_ECN_check_ce(stru
tcp_enter_quickack_mode((struct sock *)tp);
break;
case INET_ECN_CE:

@ -1,7 +1,6 @@
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Documentation/filesystems/Locking
--- vfs-4cbe5a5/Documentation/filesystems/Locking 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/Documentation/filesystems/Locking 2012-09-05 16:35:20.000000000 +0200
@@ -64,6 +64,7 @@
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -64,6 +64,7 @@ prototypes:
int (*atomic_open)(struct inode *, struct dentry *,
struct file *, unsigned open_flag,
umode_t create_mode, int *opened);
@ -9,7 +8,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
locking rules:
all may block
@@ -92,6 +93,7 @@
@@ -92,6 +93,7 @@ removexattr: yes
fiemap: no
update_time: no
atomic_open: yes
@ -17,9 +16,8 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/Locking vfs-3d5a648/Docu
Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on
victim.
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a648/Documentation/filesystems/overlayfs.txt
--- vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/Documentation/filesystems/overlayfs.txt 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/Documentation/filesystems/overlayfs.txt
@@ -0,0 +1,199 @@
+Written by: Neil Brown <neilb@suse.de>
+
@ -220,10 +218,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/overlayfs.txt vfs-3d5a64
+filesystem are not allowed. If the underlying filesystem is changed,
+the behavior of the overlay is undefined, though it will not result in
+a crash or deadlock.
diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Documentation/filesystems/vfs.txt
--- vfs-4cbe5a5/Documentation/filesystems/vfs.txt 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/Documentation/filesystems/vfs.txt 2012-09-05 16:35:20.000000000 +0200
@@ -363,6 +363,7 @@
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -363,6 +363,7 @@ struct inode_operations {
int (*atomic_open)(struct inode *, struct dentry *,
struct file *, unsigned open_flag,
umode_t create_mode, int *opened);
@ -231,7 +228,7 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
};
Again, all methods are called without any locks being held, unless
@@ -692,6 +693,12 @@
@@ -692,6 +693,12 @@ struct address_space_operations {
but instead uses bmap to find out where the blocks in the file
are and uses those addresses directly.
@ -244,10 +241,9 @@ diff -Nur -x .git vfs-4cbe5a5/Documentation/filesystems/vfs.txt vfs-3d5a648/Docu
invalidatepage: If a page has PagePrivate set, then invalidatepage
will be called when part or all of the page is to be removed
diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
--- vfs-4cbe5a5/fs/ecryptfs/main.c 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/ecryptfs/main.c 2012-09-05 16:35:20.000000000 +0200
@@ -565,6 +565,13 @@
--- a/fs/ecryptfs/main.c
+++ b/fs/ecryptfs/main.c
@@ -566,6 +566,13 @@ static struct dentry *ecryptfs_mount(str
s->s_maxbytes = path.dentry->d_sb->s_maxbytes;
s->s_blocksize = path.dentry->d_sb->s_blocksize;
s->s_magic = ECRYPTFS_SUPER_MAGIC;
@ -261,10 +257,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/ecryptfs/main.c vfs-3d5a648/fs/ecryptfs/main.c
inode = ecryptfs_get_inode(path.dentry->d_inode, s);
rc = PTR_ERR(inode);
diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
--- vfs-4cbe5a5/fs/internal.h 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/internal.h 2012-09-05 16:35:20.000000000 +0200
@@ -42,11 +42,6 @@
--- a/fs/internal.h
+++ b/fs/internal.h
@@ -42,11 +42,6 @@ static inline int __sync_blockdev(struct
extern void __init chrdev_init(void);
/*
@ -276,10 +271,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/internal.h vfs-3d5a648/fs/internal.h
* namespace.c
*/
extern int copy_mount_options(const void __user *, unsigned long *);
diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
--- vfs-4cbe5a5/fs/Kconfig 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/Kconfig 2012-09-05 16:35:20.000000000 +0200
@@ -67,6 +67,7 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -67,6 +67,7 @@ source "fs/quota/Kconfig"
source "fs/autofs4/Kconfig"
source "fs/fuse/Kconfig"
@ -287,10 +281,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Kconfig vfs-3d5a648/fs/Kconfig
config CUSE
tristate "Character device in Userspace support"
diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
--- vfs-4cbe5a5/fs/Makefile 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/Makefile 2012-09-05 16:35:20.000000000 +0200
@@ -106,6 +106,7 @@
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -106,6 +106,7 @@ obj-$(CONFIG_QNX6FS_FS) += qnx6/
obj-$(CONFIG_AUTOFS4_FS) += autofs4/
obj-$(CONFIG_ADFS_FS) += adfs/
obj-$(CONFIG_FUSE_FS) += fuse/
@ -298,10 +291,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/Makefile vfs-3d5a648/fs/Makefile
obj-$(CONFIG_UDF_FS) += udf/
obj-$(CONFIG_SUN_OPENPROMFS) += openpromfs/
obj-$(CONFIG_OMFS_FS) += omfs/
diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
--- vfs-4cbe5a5/fs/namei.c 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/namei.c 2012-09-05 16:35:20.000000000 +0200
@@ -348,6 +348,7 @@
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -348,6 +348,7 @@ int __inode_permission(struct inode *ino
return security_inode_permission(inode, mask);
}
@ -309,7 +301,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
/**
* sb_permission - Check superblock-level permissions
@@ -2822,9 +2823,12 @@
@@ -2822,9 +2823,12 @@ finish_open_created:
error = may_open(&nd->path, acc_mode, open_flag);
if (error)
goto out;
@ -325,10 +317,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namei.c vfs-3d5a648/fs/namei.c
if (error == -EOPENSTALE)
goto stale_open;
goto out;
diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
--- vfs-4cbe5a5/fs/namespace.c 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/namespace.c 2012-09-05 16:35:20.000000000 +0200
@@ -1387,6 +1387,24 @@
--- a/fs/namespace.c
+++ b/fs/namespace.c
@@ -1387,6 +1387,24 @@ void drop_collected_mounts(struct vfsmou
release_mounts(&umount_list);
}
@ -353,10 +344,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/namespace.c vfs-3d5a648/fs/namespace.c
int iterate_mounts(int (*f)(struct vfsmount *, void *), void *arg,
struct vfsmount *root)
{
diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
--- vfs-4cbe5a5/fs/open.c 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/open.c 2012-09-05 16:35:20.000000000 +0200
@@ -787,8 +787,7 @@
--- a/fs/open.c
+++ b/fs/open.c
@@ -787,8 +787,7 @@ struct file *dentry_open(const struct pa
return ERR_PTR(error);
f->f_flags = flags;
@ -366,7 +356,7 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
if (!error) {
error = open_check_o_direct(f);
if (error) {
@@ -803,6 +802,26 @@
@@ -803,6 +802,26 @@ struct file *dentry_open(const struct pa
}
EXPORT_SYMBOL(dentry_open);
@ -393,9 +383,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/open.c vfs-3d5a648/fs/open.c
static void __put_unused_fd(struct files_struct *files, unsigned int fd)
{
struct fdtable *fdt = files_fdtable(files);
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/copy_up.c
--- vfs-4cbe5a5/fs/overlayfs/copy_up.c 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/copy_up.c 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/copy_up.c
@@ -0,0 +1,385 @@
+/*
+ *
@ -782,9 +771,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/copy_up.c vfs-3d5a648/fs/overlayfs/co
+ dput(parent);
+ return err;
+}
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
--- vfs-4cbe5a5/fs/overlayfs/dir.c 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/dir.c 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/dir.c
@@ -0,0 +1,604 @@
+/*
+ *
@ -1390,9 +1378,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/dir.c vfs-3d5a648/fs/overlayfs/dir.c
+ .listxattr = ovl_listxattr,
+ .removexattr = ovl_removexattr,
+};
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inode.c
--- vfs-4cbe5a5/fs/overlayfs/inode.c 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/inode.c 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/inode.c
@@ -0,0 +1,372 @@
+/*
+ *
@ -1766,17 +1753,15 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/inode.c vfs-3d5a648/fs/overlayfs/inod
+ return inode;
+
+}
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Kconfig vfs-3d5a648/fs/overlayfs/Kconfig
--- vfs-4cbe5a5/fs/overlayfs/Kconfig 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/Kconfig 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/Kconfig
@@ -0,0 +1,4 @@
+config OVERLAYFS_FS
+ tristate "Overlay filesystem support"
+ help
+ Add support for overlay filesystem.
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Makefile
--- vfs-4cbe5a5/fs/overlayfs/Makefile 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/Makefile 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/Makefile
@@ -0,0 +1,7 @@
+#
+# Makefile for the overlay filesystem.
@ -1785,9 +1770,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/Makefile vfs-3d5a648/fs/overlayfs/Mak
+obj-$(CONFIG_OVERLAYFS_FS) += overlayfs.o
+
+overlayfs-objs := super.o inode.o dir.o readdir.o copy_up.o
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/overlayfs.h
--- vfs-4cbe5a5/fs/overlayfs/overlayfs.h 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/overlayfs.h 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/overlayfs.h
@@ -0,0 +1,70 @@
+/*
+ *
@ -1859,9 +1843,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/overlayfs.h vfs-3d5a648/fs/overlayfs/
+/* copy_up.c */
+int ovl_copy_up(struct dentry *dentry);
+int ovl_copy_up_truncate(struct dentry *dentry, loff_t size);
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/readdir.c
--- vfs-4cbe5a5/fs/overlayfs/readdir.c 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/readdir.c 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/readdir.c
@@ -0,0 +1,566 @@
+/*
+ *
@ -2429,9 +2412,8 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/readdir.c vfs-3d5a648/fs/overlayfs/re
+
+ return err;
+}
diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/super.c
--- vfs-4cbe5a5/fs/overlayfs/super.c 1970-01-01 01:00:00.000000000 +0100
+++ vfs-3d5a648/fs/overlayfs/super.c 2012-09-05 16:35:20.000000000 +0200
--- /dev/null
+++ b/fs/overlayfs/super.c
@@ -0,0 +1,685 @@
+/*
+ *
@ -3118,10 +3100,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/overlayfs/super.c vfs-3d5a648/fs/overlayfs/supe
+
+module_init(ovl_init);
+module_exit(ovl_exit);
diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
--- vfs-4cbe5a5/fs/splice.c 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/fs/splice.c 2012-09-05 16:35:20.000000000 +0200
@@ -1308,6 +1308,7 @@
--- a/fs/splice.c
+++ b/fs/splice.c
@@ -1308,6 +1308,7 @@ long do_splice_direct(struct file *in, l
return ret;
}
@ -3129,10 +3110,9 @@ diff -Nur -x .git vfs-4cbe5a5/fs/splice.c vfs-3d5a648/fs/splice.c
static int splice_pipe_to_pipe(struct pipe_inode_info *ipipe,
struct pipe_inode_info *opipe,
diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
--- vfs-4cbe5a5/include/linux/fs.h 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/include/linux/fs.h 2012-09-05 16:35:20.000000000 +0200
@@ -505,6 +505,12 @@
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -505,6 +505,12 @@ struct iattr {
*/
#include <linux/quota.h>
@ -3145,7 +3125,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
/**
* enum positive_aop_returns - aop return codes with specific semantics
*
@@ -1578,6 +1584,11 @@
@@ -1578,6 +1584,11 @@ struct super_block {
/* Being remounted read-only */
int s_readonly_remount;
@ -3157,7 +3137,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
};
/* superblock cache pruning functions */
@@ -1835,6 +1846,7 @@
@@ -1835,6 +1846,7 @@ struct inode_operations {
int (*atomic_open)(struct inode *, struct dentry *,
struct file *, unsigned open_flag,
umode_t create_mode, int *opened);
@ -3165,7 +3145,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
} ____cacheline_aligned;
struct seq_file;
@@ -2199,6 +2211,7 @@
@@ -2199,6 +2211,7 @@ extern long do_sys_open(int dfd, const c
extern struct file *filp_open(const char *, int, umode_t);
extern struct file *file_open_root(struct dentry *, struct vfsmount *,
const char *, int);
@ -3173,7 +3153,7 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
extern struct file * dentry_open(const struct path *, int, const struct cred *);
extern int filp_close(struct file *, fl_owner_t id);
extern char * getname(const char __user *);
@@ -2402,6 +2415,7 @@
@@ -2402,6 +2415,7 @@ extern sector_t bmap(struct inode *, sec
#endif
extern int notify_change(struct dentry *, struct iattr *);
extern int inode_permission(struct inode *, int);
@ -3181,10 +3161,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/fs.h vfs-3d5a648/include/linux/fs.h
extern int generic_permission(struct inode *, int);
static inline bool execute_ok(struct inode *inode)
diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mount.h
--- vfs-4cbe5a5/include/linux/mount.h 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/include/linux/mount.h 2012-09-05 16:35:20.000000000 +0200
@@ -66,6 +66,9 @@
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -66,6 +66,9 @@ extern void mnt_pin(struct vfsmount *mnt
extern void mnt_unpin(struct vfsmount *mnt);
extern int __mnt_is_readonly(struct vfsmount *mnt);
@ -3194,10 +3173,9 @@ diff -Nur -x .git vfs-4cbe5a5/include/linux/mount.h vfs-3d5a648/include/linux/mo
struct file_system_type;
extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
int flags, const char *name,
diff -Nur -x .git vfs-4cbe5a5/MAINTAINERS vfs-3d5a648/MAINTAINERS
--- vfs-4cbe5a5/MAINTAINERS 2012-09-01 19:39:58.000000000 +0200
+++ vfs-3d5a648/MAINTAINERS 2012-09-05 16:35:20.000000000 +0200
@@ -5103,6 +5103,13 @@
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -5105,6 +5105,13 @@ F: drivers/scsi/osd/
F: include/scsi/osd_*
F: fs/exofs/

@ -1,6 +1,6 @@
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -795,7 +795,7 @@ static int ehci_run (struct usb_hcd *hcd
@@ -645,7 +645,7 @@ static int ehci_run (struct usb_hcd *hcd
"USB %x.%x started, EHCI %x.%02x%s\n",
((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f),
temp >> 8, temp & 0xff,
@ -11,7 +11,7 @@
&ehci->regs->intr_enable); /* Turn On Interrupts */
--- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c
@@ -578,7 +578,7 @@ ehci_hub_status_data (struct usb_hcd *hc
@@ -585,7 +585,7 @@ ehci_hub_status_data (struct usb_hcd *hc
* always set, seem to clear PORT_OCC and PORT_CSC when writing to
* PORT_POWER; that's surprising, but maybe within-spec.
*/
@ -20,7 +20,7 @@
mask = PORT_CSC | PORT_PEC | PORT_OCC;
else
mask = PORT_CSC | PORT_PEC;
@@ -803,7 +803,7 @@ static int ehci_hub_control (
@@ -804,7 +804,7 @@ static int ehci_hub_control (
if (temp & PORT_PEC)
status |= USB_PORT_STAT_C_ENABLE << 16;
@ -31,7 +31,7 @@
/*
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -147,6 +147,7 @@ struct ehci_hcd { /* one per controlle
@@ -197,6 +197,7 @@ struct ehci_hcd { /* one per controlle
unsigned use_dummy_qh:1; /* AMD Frame List table quirk*/
unsigned has_synopsys_hc_bug:1; /* Synopsys HC */
unsigned frame_index_bug:1; /* MosChip (AKA NetMos) */

@ -1,6 +1,6 @@
--- a/scripts/setlocalversion
+++ b/scripts/setlocalversion
@@ -168,7 +168,7 @@ else
@@ -167,7 +167,7 @@ else
# annotated or signed tagged state (as git describe only
# looks at signed or annotated tags - git tag -a/-s) and
# LOCALVERSION= is not specified

@ -1,6 +1,6 @@
--- a/Makefile
+++ b/Makefile
@@ -559,9 +559,9 @@ endif # $(dot-config)
@@ -556,9 +556,9 @@ endif # $(dot-config)
all: vmlinux
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
@ -12,7 +12,7 @@
endif
include $(srctree)/arch/$(SRCARCH)/Makefile
@@ -620,6 +620,9 @@ endif
@@ -627,6 +627,9 @@ endif
NOSTDINC_FLAGS += -nostdinc -isystem $(shell $(CC) -print-file-name=include)
CHECKFLAGS += $(NOSTDINC_FLAGS)

@ -1,6 +1,6 @@
--- a/Makefile
+++ b/Makefile
@@ -374,7 +374,7 @@ KBUILD_CFLAGS_KERNEL :=
@@ -369,7 +369,7 @@ KBUILD_CFLAGS_KERNEL :=
KBUILD_AFLAGS := -D__ASSEMBLY__
KBUILD_AFLAGS_MODULE := -DMODULE
KBUILD_CFLAGS_MODULE := -DMODULE

@ -1,6 +1,6 @@
--- a/include/linux/stddef.h
+++ b/include/linux/stddef.h
@@ -16,6 +16,7 @@ enum {
@@ -12,6 +12,7 @@ enum {
false = 0,
true = 1
};
@ -8,7 +8,7 @@
#undef offsetof
#ifdef __compiler_offsetof
@@ -23,6 +24,5 @@ enum {
@@ -19,6 +20,5 @@ enum {
#else
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
#endif

@ -28,7 +28,7 @@
#ifndef SYMBOL_PREFIX
#define VMLINUX_SYMBOL(sym) sym
#else
@@ -275,14 +296,14 @@
@@ -276,14 +297,14 @@
/* Kernel symbol table: Normal symbols */ \
__ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
VMLINUX_SYMBOL(__start___ksymtab) = .; \
@ -45,7 +45,7 @@
VMLINUX_SYMBOL(__stop___ksymtab_gpl) = .; \
} \
\
@@ -344,7 +365,7 @@
@@ -345,7 +366,7 @@
\
/* Kernel symbol table: strings */ \
__ksymtab_strings : AT(ADDR(__ksymtab_strings) - LOAD_OFFSET) { \
@ -54,7 +54,7 @@
} \
\
/* __*init sections */ \
@@ -676,6 +697,9 @@
@@ -670,6 +691,9 @@
EXIT_TEXT \
EXIT_DATA \
EXIT_CALL \

@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -181,7 +181,6 @@ config NF_CONNTRACK_FTP
@@ -191,7 +191,6 @@ config NF_CONNTRACK_FTP
config NF_CONNTRACK_H323
tristate "H.323 protocol support"
@ -8,7 +8,7 @@
depends on NETFILTER_ADVANCED
help
H.323 is a VoIP signalling protocol from ITU-T. As one of the most
@@ -627,7 +626,6 @@ config NETFILTER_XT_TARGET_SECMARK
@@ -693,7 +692,6 @@ config NETFILTER_XT_TARGET_SECMARK
config NETFILTER_XT_TARGET_TCPMSS
tristate '"TCPMSS" target support'

@ -1,6 +1,6 @@
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -172,6 +172,7 @@ config CRYPTO_DEV_MV_CESA
@@ -164,6 +164,7 @@ config CRYPTO_DEV_MV_CESA
depends on PLAT_ORION
select CRYPTO_ALGAPI
select CRYPTO_AES

@ -1,6 +1,6 @@
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -207,16 +207,16 @@ config BCH_CONST_T
@@ -277,16 +277,16 @@ config BCH_CONST_T
# Textsearch support is select'ed if needed
#
config TEXTSEARCH

@ -1,6 +1,6 @@
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -143,13 +143,13 @@ config LIB80211
@@ -150,13 +150,13 @@ config LIB80211
you want this built into your kernel.
config LIB80211_CRYPT_WEP

@ -8,7 +8,7 @@ Acked-by: Rob Landley <rob@landley.net>
---
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -877,9 +877,6 @@ config ARC
@@ -894,9 +894,6 @@ config ARC
config ARCH_MAY_HAVE_PC_FDC
bool
@ -18,7 +18,7 @@ Acked-by: Rob Landley <rob@landley.net>
config CEVT_BCM1480
bool
@@ -2330,6 +2327,18 @@ config USE_OF
@@ -2367,6 +2364,18 @@ config USE_OF
help
Include support for flattened device tree machine descriptions.

@ -1,6 +1,6 @@
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -976,6 +976,10 @@ config SYNC_R4K
@@ -993,6 +993,10 @@ config SYNC_R4K
config MIPS_MACHINE
def_bool n

@ -8,7 +8,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
--
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -961,6 +961,17 @@ config I8259
@@ -978,6 +978,17 @@ config I8259
config MIPS_BONITO64
bool
@ -92,7 +92,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
+#endif /* CONFIG_MIPS_FPU_EMU */
--- a/arch/mips/math-emu/dsemul.c
+++ b/arch/mips/math-emu/dsemul.c
@@ -109,6 +109,7 @@ int mips_dsemul(struct pt_regs *regs, mi
@@ -108,6 +108,7 @@ int mips_dsemul(struct pt_regs *regs, mi
return SIGILL; /* force out of emulation loop */
}
@ -100,7 +100,7 @@ Signed-off-by: Florian Fainelli <florian@openwrt.org>
int do_dsemulret(struct pt_regs *xcp)
{
struct emuframe __user *fr;
@@ -165,3 +166,9 @@ int do_dsemulret(struct pt_regs *xcp)
@@ -164,3 +165,9 @@ int do_dsemulret(struct pt_regs *xcp)
return 1;
}

@ -13,7 +13,7 @@
--- a/arch/mips/include/asm/module.h
+++ b/arch/mips/include/asm/module.h
@@ -9,6 +9,11 @@ struct mod_arch_specific {
@@ -11,6 +11,11 @@ struct mod_arch_specific {
const struct exception_table_entry *dbe_start;
const struct exception_table_entry *dbe_end;
struct mips_hi16 *r_mips_hi16_list;
@ -27,7 +27,7 @@
typedef uint8_t Elf64_Byte; /* Type for a 8-bit quantity. */
--- a/arch/mips/kernel/module.c
+++ b/arch/mips/kernel/module.c
@@ -44,14 +44,219 @@ static struct mips_hi16 *mips_hi16_list;
@@ -42,14 +42,219 @@ struct mips_hi16 {
static LIST_HEAD(dbe_list);
static DEFINE_SPINLOCK(dbe_lock);
@ -248,7 +248,7 @@
static int apply_r_mips_none(struct module *me, u32 *location, Elf_Addr v)
{
@@ -72,28 +277,36 @@ static int apply_r_mips_32_rela(struct m
@@ -70,28 +275,36 @@ static int apply_r_mips_32_rela(struct m
return 0;
}
@ -301,7 +301,7 @@
{
if (v % 4) {
pr_err("module %s: dangerous R_MIPS_26 RELArelocation\n",
@@ -102,17 +315,31 @@ static int apply_r_mips_26_rela(struct m
@@ -100,17 +313,31 @@ static int apply_r_mips_26_rela(struct m
}
if ((v & 0xf0000000) != (((unsigned long)location + 4) & 0xf0000000)) {
@ -336,7 +336,7 @@
static int apply_r_mips_hi16_rel(struct module *me, u32 *location, Elf_Addr v)
{
struct mips_hi16 *n;
@@ -380,11 +607,32 @@ int module_finalize(const Elf_Ehdr *hdr,
@@ -405,11 +632,32 @@ int module_finalize(const Elf_Ehdr *hdr,
list_add(&me->arch.dbe_list, &dbe_list);
spin_unlock_irq(&dbe_lock);
}

@ -1,7 +1,7 @@
--- a/arch/mips/oprofile/op_model_mipsxx.c
+++ b/arch/mips/oprofile/op_model_mipsxx.c
@@ -298,6 +298,11 @@ static void reset_counters(void *arg)
}
@@ -303,6 +303,11 @@ static irqreturn_t mipsxx_perfcount_int(
return mipsxx_perfcount_handler();
}
+static irqreturn_t mipsxx_perfcount_int(int irq, void *dev_id)
@ -12,9 +12,9 @@
static int __init mipsxx_init(void)
{
int counters;
@@ -374,6 +379,10 @@ static int __init mipsxx_init(void)
save_perf_irq = perf_irq;
perf_irq = mipsxx_perfcount_handler;
@@ -385,6 +390,10 @@ static int __init mipsxx_init(void)
return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
0, "Perfcounter", save_perf_irq);
+ if (cp0_perfcount_irq >= 0)
+ return request_irq(cp0_perfcount_irq, mipsxx_perfcount_int,
@ -23,9 +23,9 @@
return 0;
}
@@ -381,6 +390,9 @@ static void mipsxx_exit(void)
{
int counters = op_model_mipsxx_ops.num_counters;
@@ -395,6 +404,9 @@ static void mipsxx_exit(void)
if ((cp0_perfcount_irq >= 0) && (cp0_compare_irq != cp0_perfcount_irq))
free_irq(cp0_perfcount_irq, save_perf_irq);
+ if (cp0_perfcount_irq >= 0)
+ free_irq(cp0_perfcount_irq, save_perf_irq);

@ -1,6 +1,6 @@
--- a/arch/mips/kernel/cpu-probe.c
+++ b/arch/mips/kernel/cpu-probe.c
@@ -816,10 +816,13 @@ static inline void cpu_probe_mips(struct
@@ -833,10 +833,13 @@ static inline void cpu_probe_mips(struct
__cpu_name[cpu] = "MIPS 20Kc";
break;
case PRID_IMP_24K:

@ -3,7 +3,7 @@ they still want to support gcc 3.3 -- well, we don't.
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -130,7 +130,8 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
@@ -119,7 +119,8 @@ ifeq ($(CONFIG_FUNCTION_TRACER),y)
KBUILD_CFLAGS += -mno-sched-epilog
endif

@ -1,10 +1,10 @@
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -94,7 +94,6 @@ else
endif
endif
@@ -86,7 +86,6 @@ CPP = $(CC) -E $(KBUILD_CFLAGS)
CHECKFLAGS += -m$(CONFIG_WORD_SIZE) -D__powerpc__ -D__powerpc$(CONFIG_WORD_SIZE)__
-KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
ifeq ($(CONFIG_TUNE_CELL),y)
KBUILD_CFLAGS += $(call cc-option,-mtune=cell)
# No AltiVec or VSX instructions when building kernel
KBUILD_CFLAGS += $(call cc-option,-mno-altivec)

@ -437,7 +437,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
#include <asm/addrspace.h>
#include <asm/bootinfo.h>
@@ -523,12 +524,62 @@ static void __init arch_mem_init(char **
@@ -522,12 +523,62 @@ static void __init arch_mem_init(char **
}
bootmem_init();
@ -500,7 +500,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
static void __init resource_init(void)
{
int i;
@@ -544,6 +595,8 @@ static void __init resource_init(void)
@@ -543,6 +594,8 @@ static void __init resource_init(void)
/*
* Request address space for all standard RAM.
*/
@ -509,7 +509,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
for (i = 0; i < boot_mem_map.nr_map; i++) {
struct resource *res;
unsigned long start, end;
@@ -580,6 +633,7 @@ static void __init resource_init(void)
@@ -579,6 +632,7 @@ static void __init resource_init(void)
*/
request_resource(res, &code_resource);
request_resource(res, &data_resource);
@ -519,7 +519,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -433,3 +433,21 @@ void flush_tlb_one(unsigned long vaddr)
@@ -386,3 +386,21 @@ void flush_tlb_one(unsigned long vaddr)
EXPORT_SYMBOL(flush_tlb_page);
EXPORT_SYMBOL(flush_tlb_one);

@ -146,7 +146,7 @@ Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
- .size relocate_new_kernel_size, PTRSIZE
--- a/arch/mips/kernel/vmlinux.lds.S
+++ b/arch/mips/kernel/vmlinux.lds.S
@@ -50,6 +50,10 @@ SECTIONS
@@ -51,6 +51,10 @@ SECTIONS
*(.text.*)
*(.fixup)
*(.gnu.warning)

@ -1,6 +1,6 @@
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2322,12 +2322,15 @@ static void dynamic_debug_remove(struct
@@ -2353,12 +2353,15 @@ static void dynamic_debug_remove(struct
void * __weak module_alloc(unsigned long size)
{

@ -31,11 +31,11 @@
*/
#define PART(x) ((struct mtd_part *)(x))
-
+#define IS_PART(mtd) (mtd->read == part_read)
+#define IS_PART(mtd) (mtd->_read == part_read)
/*
* MTD methods which simply translate the effective address and pass through
@@ -643,6 +645,155 @@ int mtd_del_partition(struct mtd_info *m
@@ -613,6 +615,155 @@ int mtd_del_partition(struct mtd_info *m
}
EXPORT_SYMBOL_GPL(mtd_del_partition);
@ -55,7 +55,7 @@
+ struct squashfs_super_block sb;
+ int len, ret;
+
+ ret = master->read(master, offset, sizeof(sb), &len, (void *) &sb);
+ ret = master->_read(master, offset, sizeof(sb), &len, (void *) &sb);
+ if (ret || (len != sizeof(sb))) {
+ printk(KERN_ALERT "split_squashfs: error occured while reading "
+ "from \"%s\"\n", master->name);
@ -191,7 +191,7 @@
/*
* This function, given a master MTD object and a partition table, creates
* and registers slave MTD objects which are bound to the master according to
@@ -659,6 +810,9 @@ int add_mtd_partitions(struct mtd_info *
@@ -629,6 +780,9 @@ int add_mtd_partitions(struct mtd_info *
struct mtd_part *slave;
uint64_t cur_offset = 0;
int i;
@ -201,7 +201,7 @@
printk(KERN_NOTICE "Creating %d MTD partitions on \"%s\":\n", nbparts, master->name);
@@ -673,12 +827,53 @@ int add_mtd_partitions(struct mtd_info *
@@ -643,12 +797,53 @@ int add_mtd_partitions(struct mtd_info *
add_mtd_device(&slave->mtd);
@ -257,7 +257,7 @@
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -1005,6 +1005,12 @@ static int mtdchar_ioctl(struct file *fi
@@ -1012,6 +1012,12 @@ static int mtdchar_ioctl(struct file *fi
break;
}
@ -280,7 +280,7 @@
struct mtd_info {
u_char type;
uint32_t flags;
@@ -214,6 +215,9 @@ struct mtd_info {
@@ -226,6 +227,9 @@ struct mtd_info {
int (*_block_markbad) (struct mtd_info *mtd, loff_t ofs);
int (*_suspend) (struct mtd_info *mtd);
void (*_resume) (struct mtd_info *mtd);
@ -290,7 +290,7 @@
/*
* If the driver is something smart, like UBI, it may need to maintain
* its own reference counting. The below functions are only for driver.
@@ -502,6 +506,7 @@ extern int mtd_device_parse_register(str
@@ -375,6 +379,7 @@ extern int mtd_device_parse_register(str
int defnr_parts);
#define mtd_device_register(master, parts, nr_parts) \
mtd_device_parse_register(master, NULL, NULL, parts, nr_parts)

@ -9,7 +9,7 @@
/* Our partition linked list */
static LIST_HEAD(mtd_partitions);
static DEFINE_MUTEX(mtd_partitions_mutex);
@@ -252,13 +254,60 @@ static int part_erase(struct mtd_info *m
@@ -230,13 +232,60 @@ static int part_erase(struct mtd_info *m
struct mtd_part *part = PART(mtd);
int ret;
@ -70,21 +70,21 @@
return ret;
}
@@ -266,7 +315,25 @@ void mtd_erase_callback(struct erase_inf
@@ -244,7 +293,25 @@ void mtd_erase_callback(struct erase_inf
{
if (instr->mtd->erase == part_erase) {
if (instr->mtd->_erase == part_erase) {
struct mtd_part *part = PART(instr->mtd);
+ size_t wrlen = 0;
+ if (instr->mtd->flags & MTD_ERASE_PARTIAL) {
+ if (instr->partial_start) {
+ part->master->write(part->master,
+ part->master->_write(part->master,
+ instr->addr, instr->erase_buf_ofs,
+ &wrlen, instr->erase_buf);
+ instr->addr += instr->erase_buf_ofs;
+ } else {
+ instr->len -= instr->erase_buf_ofs;
+ part->master->write(part->master,
+ part->master->_write(part->master,
+ instr->addr + instr->len,
+ instr->erase_buf_ofs, &wrlen,
+ instr->erase_buf +
@ -96,7 +96,7 @@
if (instr->fail_addr != MTD_FAIL_ADDR_UNKNOWN)
instr->fail_addr -= part->offset;
instr->addr -= part->offset;
@@ -537,18 +604,24 @@ static struct mtd_part *allocate_partiti
@@ -504,18 +571,24 @@ static struct mtd_part *allocate_partiti
if ((slave->mtd.flags & MTD_WRITEABLE) &&
mtd_mod_by_eb(slave->offset, &slave->mtd)) {
/* Doesn't start on a boundary of major erase size */
@ -129,7 +129,7 @@
+ part->name);
slave->mtd.ecclayout = master->ecclayout;
if (master->block_isbad) {
slave->mtd.ecc_strength = master->ecc_strength;
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -58,6 +58,10 @@ struct erase_info {

@ -1,6 +1,6 @@
--- a/drivers/mtd/redboot.c
+++ b/drivers/mtd/redboot.c
@@ -267,14 +267,21 @@ static int parse_redboot_partitions(stru
@@ -265,14 +265,21 @@ static int parse_redboot_partitions(stru
#endif
names += strlen(names)+1;

@ -17,7 +17,7 @@
int nrparts = 0;
struct fis_image_desc *buf;
struct mtd_partition *parts;
@@ -227,14 +230,14 @@ static int parse_redboot_partitions(stru
@@ -225,14 +228,14 @@ static int parse_redboot_partitions(stru
}
}
#endif
@ -34,7 +34,7 @@
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
if (nulllen > 0) {
strcpy(nullname, nullstring);
@@ -253,6 +256,8 @@ static int parse_redboot_partitions(stru
@@ -251,6 +254,8 @@ static int parse_redboot_partitions(stru
}
#endif
for ( ; i<nrparts; i++) {
@ -43,7 +43,7 @@
parts[i].size = fl->img->size;
parts[i].offset = fl->img->flash_base;
parts[i].name = names;
@@ -286,6 +291,14 @@ static int parse_redboot_partitions(stru
@@ -284,6 +289,14 @@ static int parse_redboot_partitions(stru
fl = fl->next;
kfree(tmp_fl);
}

@ -8,7 +8,7 @@
#include <linux/mutex.h>
#include <linux/mount.h>
#include <linux/slab.h>
@@ -231,11 +232,12 @@ static void block2mtd_free_device(struct
@@ -208,11 +209,12 @@ static void block2mtd_free_device(struct
/* FIXME: ensure that mtd->size % erase_size == 0 */
@ -22,7 +22,7 @@
char *name;
if (!devname)
@@ -274,13 +276,16 @@ static struct block2mtd_dev *add_device(
@@ -251,13 +253,16 @@ static struct block2mtd_dev *add_device(
/* Setup the MTD structure */
/* make the name contain the block device in */
@ -41,7 +41,7 @@
dev->mtd.erasesize = erase_size;
dev->mtd.writesize = 1;
dev->mtd.writebufsize = PAGE_SIZE;
@@ -294,14 +299,17 @@ static struct block2mtd_dev *add_device(
@@ -270,14 +275,17 @@ static struct block2mtd_dev *add_device(
dev->mtd.priv = dev;
dev->mtd.owner = THIS_MODULE;
@ -62,7 +62,7 @@
return dev;
devinit_err:
@@ -374,9 +382,9 @@ static char block2mtd_paramline[80 + 12]
@@ -350,9 +358,9 @@ static char block2mtd_paramline[80 + 12]
static int block2mtd_setup2(const char *val)
{
@ -74,7 +74,7 @@
char *name;
size_t erase_size = PAGE_SIZE;
int i, ret;
@@ -387,7 +395,7 @@ static int block2mtd_setup2(const char *
@@ -363,7 +371,7 @@ static int block2mtd_setup2(const char *
strcpy(str, val);
kill_final_newline(str);
@ -83,7 +83,7 @@
token[i] = strsep(&str, ",");
if (str)
@@ -406,8 +414,10 @@ static int block2mtd_setup2(const char *
@@ -382,8 +390,10 @@ static int block2mtd_setup2(const char *
parse_err("illegal erase size");
}
}
@ -95,7 +95,7 @@
return 0;
}
@@ -441,7 +451,7 @@ static int block2mtd_setup(const char *v
@@ -417,7 +427,7 @@ static int block2mtd_setup(const char *v
module_param_call(block2mtd, block2mtd_setup, NULL, NULL, 0200);
@ -106,7 +106,7 @@
{
--- a/block/partition-generic.c
+++ b/block/partition-generic.c
@@ -546,6 +546,7 @@ int invalidate_partitions(struct gendisk
@@ -548,6 +548,7 @@ int invalidate_partitions(struct gendisk
return 0;
}

@ -1,6 +1,6 @@
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -29,6 +29,8 @@
@@ -29,6 +29,8 @@ struct block2mtd_dev {
struct block_device *blkdev;
struct mtd_info mtd;
struct mutex write_mutex;
@ -9,7 +9,7 @@
};
@@ -79,6 +81,12 @@
@@ -79,6 +81,12 @@ static int block2mtd_erase(struct mtd_in
size_t len = instr->len;
int err;
@ -22,7 +22,7 @@
instr->state = MTD_ERASING;
mutex_lock(&dev->write_mutex);
err = _block2mtd_erase(dev, from, len);
@@ -90,6 +98,10 @@
@@ -90,6 +98,10 @@ static int block2mtd_erase(struct mtd_in
instr->state = MTD_ERASE_DONE;
mtd_erase_callback(instr);
@ -33,7 +33,7 @@
return err;
}
@@ -101,7 +113,13 @@
@@ -101,7 +113,13 @@ static int block2mtd_read(struct mtd_inf
struct page *page;
int index = from >> PAGE_SHIFT;
int offset = from & (PAGE_SIZE-1);
@ -48,7 +48,7 @@
while (len) {
if ((offset + len) > PAGE_SIZE)
@@ -111,8 +129,10 @@
@@ -111,8 +129,10 @@ static int block2mtd_read(struct mtd_inf
len = len - cpylen;
page = page_read(dev->blkdev->bd_inode->i_mapping, index);
@ -60,7 +60,7 @@
memcpy(buf, page_address(page) + offset, cpylen);
page_cache_release(page);
@@ -123,7 +143,10 @@
@@ -123,7 +143,10 @@ static int block2mtd_read(struct mtd_inf
offset = 0;
index++;
}
@ -72,7 +72,7 @@
}
@@ -171,13 +194,22 @@
@@ -171,13 +194,22 @@ static int block2mtd_write(struct mtd_in
size_t *retlen, const u_char *buf)
{
struct block2mtd_dev *dev = mtd->priv;
@ -96,7 +96,7 @@
return err;
}
@@ -186,33 +218,110 @@
@@ -186,33 +218,110 @@ static int block2mtd_write(struct mtd_in
static void block2mtd_sync(struct mtd_info *mtd)
{
struct block2mtd_dev *dev = mtd->priv;
@ -217,7 +217,7 @@
struct block2mtd_dev *dev;
struct mtd_partition *part;
char *name;
@@ -220,36 +329,17 @@
@@ -220,36 +329,17 @@ static struct block2mtd_dev *add_device(
if (!devname)
return NULL;
@ -258,7 +258,7 @@
/* Setup the MTD structure */
/* make the name contain the block device in */
@@ -274,6 +364,7 @@
@@ -274,6 +364,7 @@ static struct block2mtd_dev *add_device(
dev->mtd._read = block2mtd_read;
dev->mtd.priv = dev;
dev->mtd.owner = THIS_MODULE;

@ -1,6 +1,6 @@
--- a/drivers/mtd/devices/block2mtd.c
+++ b/drivers/mtd/devices/block2mtd.c
@@ -268,6 +268,7 @@ static int _open_bdev(struct block2mtd_d
@@ -241,6 +241,7 @@ static int _open_bdev(struct block2mtd_d
/* We might not have rootfs mounted at this point. Try
to resolve the device name by other means. */

@ -15,7 +15,7 @@
/* Keep gcc happy */
--- a/drivers/mtd/nand/plat_nand.c
+++ b/drivers/mtd/nand/plat_nand.c
@@ -93,7 +93,18 @@ static int __devinit plat_nand_probe(str
@@ -98,7 +98,18 @@ static int __devinit plat_nand_probe(str
}
/* Scan to find existence of the device */

@ -1,6 +1,6 @@
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -682,7 +682,7 @@ static int get_chip(struct map_info *map
@@ -700,7 +700,7 @@ static int get_chip(struct map_info *map
return 0;
case FL_ERASING:

@ -8,7 +8,7 @@
#define OPCODE_SE 0xd8 /* Sector erase (usually 64KiB) */
#define OPCODE_RDID 0x9f /* Read JEDEC ID */
@@ -625,6 +626,7 @@ struct flash_info {
@@ -594,6 +595,7 @@ struct flash_info {
u16 flags;
#define SECT_4K 0x01 /* OPCODE_BE_4K works uniformly */
#define M25P_NO_ERASE 0x02 /* No erase command needed */
@ -16,7 +16,7 @@
};
#define INFO(_jedec_id, _ext_id, _sector_size, _n_sectors, _flags) \
@@ -686,6 +688,10 @@ static const struct spi_device_id m25p_i
@@ -659,6 +661,10 @@ static const struct spi_device_id m25p_i
{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
@ -27,7 +27,7 @@
/* Spansion -- single (large) sector size only, at least
* for the chips listed here (without boot sectors).
*/
@@ -921,6 +927,9 @@ static int __devinit m25p_probe(struct s
@@ -895,6 +901,9 @@ static int __devinit m25p_probe(struct s
if (info->flags & SECT_4K) {
flash->erase_opcode = OPCODE_BE_4K;
flash->mtd.erasesize = 4096;

@ -1,6 +1,6 @@
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -765,6 +765,7 @@ static const struct spi_device_id m25p_i
@@ -739,6 +739,7 @@ static const struct spi_device_id m25p_i
{ "w25x64", INFO(0xef3017, 0, 64 * 1024, 128, SECT_4K) },
{ "w25q64", INFO(0xef4017, 0, 64 * 1024, 128, SECT_4K) },
{ "w25q80", INFO(0xef5014, 0, 64 * 1024, 16, SECT_4K) },

@ -8,7 +8,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
1 file changed, 1 insertion(+)
--- a/drivers/mtd/chips/cfi_cmdset_0002.c
+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
@@ -1409,6 +1409,7 @@ static int __xipram do_write_buffer(stru
@@ -1413,6 +1413,7 @@ static int __xipram do_write_buffer(stru
/* Write Buffer Load */
map_write(map, CMD(0x25), cmd_adr);

@ -1,8 +1,8 @@
--- a/drivers/mtd/devices/Kconfig
+++ b/drivers/mtd/devices/Kconfig
@@ -102,6 +102,14 @@ config M25PXX_USE_FAST_READ
@@ -110,6 +110,14 @@ config MTD_SPEAR_SMI
help
This option enables FAST_READ access supported by ST M25Pxx.
This enable SNOR support on SPEAR platforms using SMI controller
+config M25PXX_PREFER_SMALL_SECTOR_ERASE
+ bool "Prefer small sector erase"
@ -30,8 +30,8 @@
/****************************************************************************/
struct m25p {
@@ -925,7 +931,7 @@ static int __devinit m25p_probe(struct s
flash->mtd.write = m25p80_write;
@@ -899,7 +905,7 @@ static int __devinit m25p_probe(struct s
flash->mtd._write = m25p80_write;
/* prefer "small sector" erase if possible */
- if (info->flags & SECT_4K) {

@ -1,10 +1,10 @@
--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -677,6 +677,7 @@ static const struct spi_device_id m25p_i
@@ -646,6 +646,7 @@ static const struct spi_device_id m25p_i
{ "en25p32", INFO(0x1c2016, 0, 64 * 1024, 64, 0) },
{ "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) },
{ "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) },
+ { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) },
/* Intel/Numonyx -- xxxs33b */
{ "160s33b", INFO(0x898911, 0, 64 * 1024, 32, 0) },
/* Everspin */
{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2) },

@ -1,6 +1,6 @@
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -356,7 +356,14 @@ static int part_unlock(struct mtd_info *
@@ -330,7 +330,14 @@ static int part_lock(struct mtd_info *mt
static int part_unlock(struct mtd_info *mtd, loff_t ofs, uint64_t len)
{
struct mtd_part *part = PART(mtd);

@ -1,6 +1,6 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -35,6 +35,7 @@ source "fs/gfs2/Kconfig"
@@ -39,6 +39,7 @@ source "fs/gfs2/Kconfig"
source "fs/ocfs2/Kconfig"
source "fs/btrfs/Kconfig"
source "fs/nilfs2/Kconfig"
@ -10,7 +10,7 @@
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -125,3 +125,5 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
@@ -126,3 +126,5 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
obj-y += exofs/ # Multiple modules
obj-$(CONFIG_CEPH_FS) += ceph/
obj-$(CONFIG_PSTORE) += pstore/

@ -1,6 +1,6 @@
--- a/fs/Kconfig
+++ b/fs/Kconfig
@@ -35,7 +35,6 @@ source "fs/gfs2/Kconfig"
@@ -39,7 +39,6 @@ source "fs/gfs2/Kconfig"
source "fs/ocfs2/Kconfig"
source "fs/btrfs/Kconfig"
source "fs/nilfs2/Kconfig"
@ -8,7 +8,7 @@
endif # BLOCK
@@ -201,6 +200,10 @@ source "fs/hfsplus/Kconfig"
@@ -205,6 +204,10 @@ source "fs/hfsplus/Kconfig"
source "fs/befs/Kconfig"
source "fs/bfs/Kconfig"
source "fs/efs/Kconfig"
@ -21,7 +21,7 @@
source "fs/ubifs/Kconfig"
--- a/fs/Makefile
+++ b/fs/Makefile
@@ -125,5 +125,6 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
@@ -126,5 +126,6 @@ obj-$(CONFIG_GFS2_FS) += gfs2/
obj-y += exofs/ # Multiple modules
obj-$(CONFIG_CEPH_FS) += ceph/
obj-$(CONFIG_PSTORE) += pstore/

@ -28,7 +28,7 @@
+CFLAGS_compr_lzma.o += -Iinclude/linux -Ilib/lzma
--- a/fs/jffs2/compr.c
+++ b/fs/jffs2/compr.c
@@ -374,6 +374,9 @@ int __init jffs2_compressors_init(void)
@@ -378,6 +378,9 @@ int __init jffs2_compressors_init(void)
#ifdef CONFIG_JFFS2_LZO
jffs2_lzo_init();
#endif
@ -38,7 +38,7 @@
/* Setting default compression mode */
#ifdef CONFIG_JFFS2_CMODE_NONE
jffs2_compression_mode = JFFS2_COMPR_MODE_NONE;
@@ -397,6 +400,9 @@ int __init jffs2_compressors_init(void)
@@ -401,6 +404,9 @@ int __init jffs2_compressors_init(void)
int jffs2_compressors_exit(void)
{
/* Unregistering compressors */
@ -206,7 +206,7 @@
+}
--- a/fs/jffs2/super.c
+++ b/fs/jffs2/super.c
@@ -371,14 +371,41 @@ static int __init init_jffs2_fs(void)
@@ -373,14 +373,41 @@ static int __init init_jffs2_fs(void)
BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
@ -1049,7 +1049,7 @@
+#endif
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -118,6 +118,12 @@ config LZO_DECOMPRESS
@@ -188,6 +188,12 @@ config LZO_DECOMPRESS
source "lib/xz/Kconfig"

@ -1,13 +1,12 @@
--- a/fs/jffs2/build.c
+++ b/fs/jffs2/build.c
@@ -112,6 +112,17 @@ static int jffs2_build_filesystem(struct
@@ -114,6 +114,16 @@ static int jffs2_build_filesystem(struct
dbg_fsbuild("scanned flash completely\n");
jffs2_dbg_dump_block_lists_nolock(c);
+ if (c->flags & (1 << 7)) {
+ printk("%s(): unlocking the mtd device... ", __func__);
+ if (c->mtd->unlock)
+ c->mtd->unlock(c->mtd, 0, c->mtd->size);
+ mtd_unlock(c->mtd, 0, c->mtd->size);
+ printk("done.\n");
+
+ printk("%s(): erasing all blocks after the end marker... ", __func__);
@ -20,7 +19,7 @@
/* Now scan the directory tree, increasing nlink according to every dirent found. */
--- a/fs/jffs2/scan.c
+++ b/fs/jffs2/scan.c
@@ -147,8 +147,11 @@ int jffs2_scan_medium(struct jffs2_sb_in
@@ -148,8 +148,11 @@ int jffs2_scan_medium(struct jffs2_sb_in
/* reset summary info for next eraseblock scan */
jffs2_sum_reset_collected(s);
@ -34,7 +33,7 @@
if (ret < 0)
goto out;
@@ -549,6 +552,17 @@ static int jffs2_scan_eraseblock (struct
@@ -556,6 +559,17 @@ static int jffs2_scan_eraseblock (struct
return err;
}

@ -1,6 +1,6 @@
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -924,6 +924,13 @@ config CRYPTO_LZO
@@ -1008,6 +1008,13 @@ config CRYPTO_LZO
help
This is the LZO algorithm.

@ -1,6 +1,6 @@
--- a/fs/ubifs/Kconfig
+++ b/fs/ubifs/Kconfig
@@ -5,8 +5,10 @@
@@ -5,8 +5,10 @@ config UBIFS_FS
select CRYPTO if UBIFS_FS_ADVANCED_COMPR
select CRYPTO if UBIFS_FS_LZO
select CRYPTO if UBIFS_FS_ZLIB
@ -11,7 +11,7 @@
depends on MTD_UBI
help
UBIFS is a file system for flash devices which works on top of UBI.
@@ -35,3 +37,12 @@
@@ -35,3 +37,12 @@ config UBIFS_FS_ZLIB
default y
help
Zlib compresses better than LZO but it is slower. Say 'Y' if unsure.

@ -1,6 +1,6 @@
--- a/fs/ubifs/file.c
+++ b/fs/ubifs/file.c
@@ -1575,6 +1575,12 @@ const struct inode_operations ubifs_syml
@@ -1573,6 +1573,12 @@ const struct inode_operations ubifs_syml
.follow_link = ubifs_follow_link,
.setattr = ubifs_setattr,
.getattr = ubifs_getattr,

@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -1053,6 +1053,27 @@ config NETFILTER_XT_MATCH_STATE
@@ -1119,6 +1119,27 @@ config NETFILTER_XT_MATCH_STATE
To compile it as a module, choose M here. If unsure, say N.
@ -30,7 +30,7 @@
depends on NETFILTER_ADVANCED
--- a/net/netfilter/Makefile
+++ b/net/netfilter/Makefile
@@ -105,6 +105,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
@@ -112,6 +112,7 @@ obj-$(CONFIG_NETFILTER_XT_MATCH_RECENT)
obj-$(CONFIG_NETFILTER_XT_MATCH_SCTP) += xt_sctp.o
obj-$(CONFIG_NETFILTER_XT_MATCH_SOCKET) += xt_socket.o
obj-$(CONFIG_NETFILTER_XT_MATCH_STATE) += xt_state.o
@ -2059,7 +2059,7 @@
+}
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
@@ -214,6 +214,14 @@ destroy_conntrack(struct nf_conntrack *n
@@ -215,6 +215,14 @@ destroy_conntrack(struct nf_conntrack *n
* too. */
nf_ct_remove_expectations(ct);
@ -2091,7 +2091,7 @@
--- a/include/net/netfilter/nf_conntrack.h
+++ b/include/net/netfilter/nf_conntrack.h
@@ -134,6 +134,22 @@ struct nf_conn {
@@ -105,6 +105,22 @@ struct nf_conn {
struct net *ct_net;
#endif
@ -2132,7 +2132,7 @@
+#endif /* _XT_LAYER7_H */
--- a/include/linux/netfilter/Kbuild
+++ b/include/linux/netfilter/Kbuild
@@ -49,6 +49,7 @@ header-y += xt_hashlimit.h
@@ -52,6 +52,7 @@ header-y += xt_hashlimit.h
header-y += xt_helper.h
header-y += xt_iprange.h
header-y += xt_ipvs.h

@ -1,6 +1,6 @@
--- a/net/netfilter/Kconfig
+++ b/net/netfilter/Kconfig
@@ -857,6 +857,27 @@ config NETFILTER_XT_MATCH_IPVS
@@ -923,6 +923,27 @@ config NETFILTER_XT_MATCH_IPVS
If unsure, say N.
@ -28,7 +28,7 @@
config NETFILTER_XT_MATCH_LENGTH
tristate '"length" match support'
depends on NETFILTER_ADVANCED
@@ -1053,26 +1074,11 @@ config NETFILTER_XT_MATCH_STATE
@@ -1119,26 +1140,11 @@ config NETFILTER_XT_MATCH_STATE
To compile it as a module, choose M here. If unsure, say N.

@ -1,8 +1,8 @@
--- a/include/linux/netfilter/nf_conntrack_sip.h
+++ b/include/linux/netfilter/nf_conntrack_sip.h
@@ -2,12 +2,15 @@
#define __NF_CONNTRACK_SIP_H__
#ifdef __KERNEL__
@@ -4,12 +4,15 @@
#include <net/netfilter/nf_conntrack_expect.h>
+#include <linux/types.h>
+
@ -18,25 +18,32 @@
enum sip_expectation_classes {
--- a/net/ipv4/netfilter/nf_nat_sip.c
+++ b/net/ipv4/netfilter/nf_nat_sip.c
@@ -73,6 +73,7 @@ static int map_addr(struct sk_buff *skb,
@@ -73,11 +73,14 @@ static int map_addr(struct sk_buff *skb,
enum ip_conntrack_info ctinfo;
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
+ struct nf_conn_help *help = nfct_help(ct);
+ struct nf_ct_sip_master *ct_sip_info;
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
unsigned int buflen;
__be32 newaddr;
@@ -85,7 +86,8 @@ static int map_addr(struct sk_buff *skb,
__be16 newport;
+ ct_sip_info = nfct_help_data(ct->master);
+
if (ct->tuplehash[dir].tuple.src.u3.ip == addr->ip &&
ct->tuplehash[dir].tuple.src.u.udp.port == port) {
newaddr = ct->tuplehash[!dir].tuple.dst.u3.ip;
@@ -85,7 +88,8 @@ static int map_addr(struct sk_buff *skb,
} else if (ct->tuplehash[dir].tuple.dst.u3.ip == addr->ip &&
ct->tuplehash[dir].tuple.dst.u.udp.port == port) {
newaddr = ct->tuplehash[!dir].tuple.src.u3.ip;
- newport = ct->tuplehash[!dir].tuple.src.u.udp.port;
+ newport = help->help.ct_sip_info.forced_dport ? :
+ newport = ct_sip_info->forced_dport ? :
+ ct->tuplehash[!dir].tuple.src.u.udp.port;
} else
return 1;
@@ -121,6 +123,7 @@ static unsigned int ip_nat_sip(struct sk
@@ -121,6 +125,7 @@ static unsigned int ip_nat_sip(struct sk
enum ip_conntrack_info ctinfo;
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
@ -44,19 +51,21 @@
unsigned int coff, matchoff, matchlen;
enum sip_header_types hdr;
union nf_inet_addr addr;
@@ -229,6 +232,20 @@ next:
@@ -230,6 +235,22 @@ next:
!map_sip_addr(skb, dataoff, dptr, datalen, SIP_HDR_TO))
return NF_DROP;
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
+
+ /* Mangle destination port for Cisco phones, then fix up checksums */
+ if (dir == IP_CT_DIR_REPLY && help->help.ct_sip_info.forced_dport) {
+ if (dir == IP_CT_DIR_REPLY && ct_sip_info->forced_dport) {
+ struct udphdr *uh;
+
+ if (!skb_make_writable(skb, skb->len))
+ return NF_DROP;
+
+ uh = (struct udphdr *)(skb->data + ip_hdrlen(skb));
+ uh->dest = help->help.ct_sip_info.forced_dport;
+ uh->dest = ct_sip_info->forced_dport;
+
+ if (!nf_nat_mangle_udp_packet(skb, ct, ctinfo, 0, 0, NULL, 0))
+ return NF_DROP;
@ -65,7 +74,7 @@
return NF_ACCEPT;
}
@@ -280,8 +297,10 @@ static unsigned int ip_nat_sip_expect(st
@@ -281,10 +302,13 @@ static unsigned int ip_nat_sip_expect(st
enum ip_conntrack_info ctinfo;
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
enum ip_conntrack_dir dir = CTINFO2DIR(ctinfo);
@ -74,15 +83,18 @@
u_int16_t port;
+ __be16 srcport;
char buffer[sizeof("nnn.nnn.nnn.nnn:nnnnn")];
unsigned buflen;
unsigned int buflen;
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
@@ -294,8 +313,9 @@ static unsigned int ip_nat_sip_expect(st
/* Connection will come from reply */
if (ct->tuplehash[dir].tuple.src.u3.ip == ct->tuplehash[!dir].tuple.dst.u3.ip)
@@ -295,8 +319,9 @@ static unsigned int ip_nat_sip_expect(st
/* If the signalling port matches the connection's source port in the
* original direction, try to use the destination port in the opposite
* direction. */
- if (exp->tuple.dst.u.udp.port ==
- ct->tuplehash[dir].tuple.src.u.udp.port)
+ srcport = help->help.ct_sip_info.forced_dport ? :
+ srcport = ct_sip_info->forced_dport ? :
+ ct->tuplehash[dir].tuple.src.u.udp.port;
+ if (exp->tuple.dst.u.udp.port == srcport)
port = ntohs(ct->tuplehash[!dir].tuple.dst.u.udp.port);
@ -90,7 +102,7 @@
port = ntohs(exp->tuple.dst.u.udp.port);
--- a/net/netfilter/nf_conntrack_sip.c
+++ b/net/netfilter/nf_conntrack_sip.c
@@ -1363,8 +1363,25 @@ static int process_sip_request(struct sk
@@ -1416,8 +1416,26 @@ static int process_sip_request(struct sk
{
enum ip_conntrack_info ctinfo;
struct nf_conn *ct = nf_ct_get(skb, &ctinfo);
@ -100,6 +112,7 @@
unsigned int cseq, i;
+ union nf_inet_addr addr;
+ __be16 port;
+ struct nf_ct_sip_master *ct_sip_info = nfct_help_data(ct->master);
+
+ /* Many Cisco IP phones use a high source port for SIP requests, but
+ * listen for the response on port 5060. If we are the local
@ -112,7 +125,7 @@
+ &matchlen, &addr, &port) > 0 &&
+ port != ct->tuplehash[dir].tuple.src.u.udp.port &&
+ nf_inet_addr_cmp(&addr, &ct->tuplehash[dir].tuple.src.u3))
+ help->help.ct_sip_info.forced_dport = port;
+ ct_sip_info->forced_dport = port;
for (i = 0; i < ARRAY_SIZE(sip_handlers); i++) {
const struct sip_handler *handler;

@ -50,7 +50,7 @@
static bool
ip_checkentry(const struct ipt_ip *ip)
{
@@ -561,7 +587,7 @@ static void cleanup_match(struct xt_entr
@@ -560,7 +586,7 @@ static void cleanup_match(struct xt_entr
}
static int
@ -59,7 +59,7 @@
{
const struct xt_entry_target *t;
@@ -570,6 +596,8 @@ check_entry(const struct ipt_entry *e, c
@@ -569,6 +595,8 @@ check_entry(const struct ipt_entry *e, c
return -EINVAL;
}
@ -68,7 +68,7 @@
if (e->target_offset + sizeof(struct xt_entry_target) >
e->next_offset)
return -EINVAL;
@@ -931,6 +959,7 @@ copy_entries_to_user(unsigned int total_
@@ -930,6 +958,7 @@ copy_entries_to_user(unsigned int total_
const struct xt_table_info *private = table->private;
int ret = 0;
const void *loc_cpu_entry;
@ -76,7 +76,7 @@
counters = alloc_counters(table);
if (IS_ERR(counters))
@@ -961,6 +990,14 @@ copy_entries_to_user(unsigned int total_
@@ -960,6 +989,14 @@ copy_entries_to_user(unsigned int total_
ret = -EFAULT;
goto free_counters;
}

@ -1,6 +1,6 @@
--- a/net/ipv4/netfilter/ip_tables.c
+++ b/net/ipv4/netfilter/ip_tables.c
@@ -310,6 +310,33 @@ struct ipt_entry *ipt_next_entry(const s
@@ -309,6 +309,33 @@ struct ipt_entry *ipt_next_entry(const s
return (void *)entry + entry->next_offset;
}
@ -34,7 +34,7 @@
/* Returns one of the generic firewall policies, like NF_ACCEPT. */
unsigned int
ipt_do_table(struct sk_buff *skb,
@@ -334,6 +361,25 @@ ipt_do_table(struct sk_buff *skb,
@@ -333,6 +360,25 @@ ipt_do_table(struct sk_buff *skb,
ip = ip_hdr(skb);
indev = in ? in->name : nulldevname;
outdev = out ? out->name : nulldevname;
@ -60,7 +60,7 @@
/* We handle fragments by dealing with the first fragment as
* if it was a normal packet. All other fragments are treated
* normally, except that they will NEVER match rules that ask
@@ -348,18 +394,6 @@ ipt_do_table(struct sk_buff *skb,
@@ -347,18 +393,6 @@ ipt_do_table(struct sk_buff *skb,
acpar.family = NFPROTO_IPV4;
acpar.hooknum = hook;

@ -10,7 +10,7 @@
/* "Be conservative in what you do,
be liberal in what you accept from others."
If it's non-zero, we mark only out of window RST segments as INVALID. */
@@ -524,6 +527,9 @@ static bool tcp_in_window(const struct n
@@ -526,6 +529,9 @@ static bool tcp_in_window(const struct n
s16 receiver_offset;
bool res;
@ -20,7 +20,7 @@
/*
* Get the required data from the packet.
*/
@@ -1321,6 +1327,13 @@ static struct ctl_table tcp_sysctl_table
@@ -1425,6 +1431,13 @@ static struct ctl_table tcp_sysctl_table
.proc_handler = proc_dointvec,
},
{
@ -32,5 +32,5 @@
+ },
+ {
.procname = "nf_conntrack_tcp_be_liberal",
.data = &nf_ct_tcp_be_liberal,
.maxlen = sizeof(unsigned int),
.mode = 0644,

@ -1,6 +1,6 @@
--- a/include/linux/pkt_sched.h
+++ b/include/linux/pkt_sched.h
@@ -193,6 +193,33 @@ struct tc_sfq_xstats {
@@ -214,6 +214,33 @@ struct tc_sfq_xstats {
__s32 allot;
};
@ -114,7 +114,6 @@
+
+#include <linux/module.h>
+#include <asm/uaccess.h>
+#include <asm/system.h>
+#include <linux/bitops.h>
+#include <linux/types.h>
+#include <linux/kernel.h>
@ -751,7 +750,8 @@
+ opt.flows = q->depth;
+ opt.hash_kind = q->hash_kind;
+
+ NLA_PUT(skb, TCA_OPTIONS, sizeof(opt), &opt);
+ if (nla_put(skb, TCA_OPTIONS, sizeof(opt), &opt))
+ goto nla_put_failure;
+
+ return skb->len;
+

@ -140,7 +140,7 @@
+module_exit(connmark_cleanup_module);
--- a/net/sched/Kconfig
+++ b/net/sched/Kconfig
@@ -624,6 +624,19 @@ config NET_ACT_CSUM
@@ -670,6 +670,19 @@ config NET_ACT_CSUM
To compile this code as a module, choose M here: the
module will be called act_csum.

@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -296,6 +296,7 @@ struct packet_sock {
@@ -295,6 +295,7 @@ struct packet_sock {
unsigned int tp_loss:1;
unsigned int tp_tstamp;
struct packet_type prot_hook ____cacheline_aligned_in_smp;
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
};
#define PACKET_FANOUT_MAX 256
@@ -1383,6 +1384,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1384,6 +1385,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/*
* When we registered the protocol we saved the socket in the data
@@ -1390,6 +1392,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1391,6 +1393,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
@ -50,7 +50,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/*
* Yank back the headers [hope the device set this
@@ -1402,7 +1405,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1403,7 +1406,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
@ -59,7 +59,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
@@ -1596,12 +1599,12 @@ static int packet_rcv(struct sk_buff *sk
@@ -1609,12 +1612,12 @@ static int packet_rcv(struct sk_buff *sk
int skb_len = skb->len;
unsigned int snaplen, res;
@ -75,7 +75,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -1720,12 +1723,12 @@ static int tpacket_rcv(struct sk_buff *s
@@ -1733,12 +1736,12 @@ static int tpacket_rcv(struct sk_buff *s
struct timespec ts;
struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb);
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -2595,6 +2598,7 @@ static int packet_create(struct net *net
@@ -2619,6 +2622,7 @@ static int packet_create(struct net *net
spin_lock_init(&po->bind_lock);
mutex_init(&po->pg_vec_lock);
po->prot_hook.func = packet_rcv;
@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
@@ -3192,6 +3196,16 @@ packet_setsockopt(struct socket *sock, i
@@ -3216,6 +3220,16 @@ packet_setsockopt(struct socket *sock, i
return fanout_add(sk, val & 0xffff, val >> 16);
}
@ -116,9 +116,9 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
default:
return -ENOPROTOOPT;
}
@@ -3262,6 +3276,13 @@ static int packet_getsockopt(struct sock
data = &val;
@@ -3270,6 +3284,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
+ case PACKET_RECV_TYPE:
+ if (len > sizeof(unsigned int))
@ -128,5 +128,5 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
+ data = &val;
+ break;
case PACKET_VERSION:
if (len > sizeof(int))
len = sizeof(int);
val = po->tp_version;
break;

@ -33,7 +33,7 @@
#ifdef CONFIG_BRIDGE_IGMP_SNOOPING
static ssize_t show_multicast_router(struct net_bridge_port *p, char *buf)
{
@@ -181,6 +197,7 @@ static struct brport_attribute *brport_a
@@ -181,6 +197,7 @@ static const struct brport_attribute *br
&brport_attr_hold_timer,
&brport_attr_flush,
&brport_attr_hairpin_mode,
@ -55,7 +55,7 @@
skb = NULL;
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -109,7 +109,7 @@ void br_deliver(const struct net_bridge_
@@ -110,7 +110,7 @@ void br_deliver(const struct net_bridge_
/* called with rcu_read_lock */
void br_forward(const struct net_bridge_port *to, struct sk_buff *skb, struct sk_buff *skb0)
{
@ -64,7 +64,7 @@
if (skb0)
deliver_clone(to, skb, __br_forward);
else
@@ -164,7 +164,8 @@ out:
@@ -165,7 +165,8 @@ out:
static void br_flood(struct net_bridge *br, struct sk_buff *skb,
struct sk_buff *skb0,
void (*__packet_hook)(const struct net_bridge_port *p,
@ -74,7 +74,7 @@
{
struct net_bridge_port *p;
struct net_bridge_port *prev;
@@ -172,6 +173,9 @@ static void br_flood(struct net_bridge *
@@ -173,6 +174,9 @@ static void br_flood(struct net_bridge *
prev = NULL;
list_for_each_entry_rcu(p, &br->port_list, list) {
@ -84,7 +84,7 @@
prev = maybe_deliver(prev, p, skb, __packet_hook);
if (IS_ERR(prev))
goto out;
@@ -195,14 +199,14 @@ out:
@@ -196,14 +200,14 @@ out:
/* called with rcu_read_lock */
void br_flood_deliver(struct net_bridge *br, struct sk_buff *skb)
{

@ -1,6 +1,6 @@
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -91,6 +91,12 @@ extern void addrconf_join_solict(struc
@@ -92,6 +92,12 @@ extern void addrconf_join_solict(struc
extern void addrconf_leave_solict(struct inet6_dev *idev,
const struct in6_addr *addr);
@ -11,7 +11,7 @@
+ struct in6_addr *saddr);
+
static inline unsigned long addrconf_timeout_fixup(u32 timeout,
unsigned unit)
unsigned int unit)
{
--- a/net/bridge/Kconfig
+++ b/net/bridge/Kconfig
@ -32,7 +32,7 @@
+obj-$(subst m,y,$(CONFIG_IPV6)) += inet6_stubs.o
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -1103,7 +1103,7 @@ out:
@@ -1099,7 +1099,7 @@ out:
return ret;
}
@ -41,7 +41,7 @@
const struct in6_addr *daddr, unsigned int prefs,
struct in6_addr *saddr)
{
@@ -1228,7 +1228,6 @@ try_nextdev:
@@ -1224,7 +1224,6 @@ try_nextdev:
in6_ifa_put(hiscore->ifa);
return 0;
}
@ -49,7 +49,7 @@
int ipv6_get_lladdr(struct net_device *dev, struct in6_addr *addr,
unsigned char banned_flags)
@@ -4840,6 +4839,9 @@ int __init addrconf_init(void)
@@ -4808,6 +4807,9 @@ int __init addrconf_init(void)
ipv6_addr_label_rtnl_register();
@ -59,7 +59,7 @@
return 0;
errout:
rtnl_af_unregister(&inet6_ops);
@@ -4858,6 +4860,9 @@ void addrconf_cleanup(void)
@@ -4826,6 +4828,9 @@ void addrconf_cleanup(void)
struct net_device *dev;
int i;

@ -1,6 +1,6 @@
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -55,7 +55,7 @@ int br_dev_queue_push_xmit(struct sk_buf
@@ -56,7 +56,7 @@ int br_dev_queue_push_xmit(struct sk_buf
int br_forward_finish(struct sk_buff *skb)
{
@ -9,7 +9,7 @@
br_dev_queue_push_xmit);
}
@@ -74,7 +74,7 @@ static void __br_deliver(const struct ne
@@ -75,7 +75,7 @@ static void __br_deliver(const struct ne
return;
}
@ -18,7 +18,7 @@
br_forward_finish);
}
@@ -91,7 +91,7 @@ static void __br_forward(const struct ne
@@ -92,7 +92,7 @@ static void __br_forward(const struct ne
skb->dev = to->dev;
skb_forward_csum(skb);
@ -48,7 +48,7 @@
return RX_HANDLER_CONSUMED; /* consumed by filter */
} else {
@@ -224,7 +224,7 @@ forward:
if (!compare_ether_addr(p->br->dev->dev_addr, dest))
if (ether_addr_equal(p->br->dev->dev_addr, dest))
skb->pkt_type = PACKET_HOST;
- NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING, skb, skb->dev, NULL,
@ -58,7 +58,7 @@
default:
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -753,7 +753,7 @@ static void __br_multicast_send_query(st
@@ -770,7 +770,7 @@ static void __br_multicast_send_query(st
if (port) {
__skb_push(skb, sizeof(struct ethhdr));
skb->dev = port->dev;
@ -69,7 +69,7 @@
netif_rx(skb);
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -71,6 +71,15 @@ static int brnf_filter_pppoe_tagged __re
@@ -73,6 +73,15 @@ static int brnf_pass_vlan_indev __read_m
#define IS_ARP(skb) \
(!vlan_tx_tag_present(skb) && skb->protocol == htons(ETH_P_ARP))
@ -87,7 +87,7 @@
if (vlan_tx_tag_present(skb))
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -486,15 +486,29 @@ static inline bool br_multicast_is_route
@@ -497,15 +497,29 @@ static inline bool br_multicast_is_route
/* br_netfilter.c */
#ifdef CONFIG_BRIDGE_NETFILTER

@ -1,6 +1,6 @@
--- a/drivers/net/ppp/pppoe.c
+++ b/drivers/net/ppp/pppoe.c
@@ -856,7 +856,7 @@ static int pppoe_sendmsg(struct kiocb *i
@@ -850,7 +850,7 @@ static int pppoe_sendmsg(struct kiocb *i
goto end;
@ -9,7 +9,7 @@
0, GFP_KERNEL);
if (!skb) {
error = -ENOMEM;
@@ -864,7 +864,7 @@ static int pppoe_sendmsg(struct kiocb *i
@@ -858,7 +858,7 @@ static int pppoe_sendmsg(struct kiocb *i
}
/* Reserve space for headers. */

@ -1,6 +1,6 @@
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -145,7 +145,7 @@ static inline bool dev_xmit_complete(int
@@ -147,7 +147,7 @@ static inline bool dev_xmit_complete(int
*/
#if defined(CONFIG_WLAN) || IS_ENABLED(CONFIG_AX25)

@ -1,6 +1,6 @@
--- a/net/netlink/af_netlink.c
+++ b/net/netlink/af_netlink.c
@@ -854,25 +854,7 @@ void netlink_detachskb(struct sock *sk,
@@ -880,25 +880,7 @@ void netlink_detachskb(struct sock *sk,
static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
{

@ -1,6 +1,6 @@
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1558,7 +1558,7 @@ static inline int pskb_network_may_pull(
@@ -1626,7 +1626,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD

@ -16,7 +16,7 @@
+
comment "MII PHY device drivers"
config MARVELL_PHY
config AMD_PHY
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -3,6 +3,7 @@

@ -1,6 +1,6 @@
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -299,6 +299,50 @@ int phy_ethtool_gset(struct phy_device *
@@ -301,6 +301,50 @@ int phy_ethtool_gset(struct phy_device *
}
EXPORT_SYMBOL(phy_ethtool_gset);
@ -51,7 +51,7 @@
/**
* phy_mii_ioctl - generic PHY MII ioctl interface
* @phydev: the phy_device struct
@@ -474,7 +518,7 @@ static void phy_force_reduction(struct p
@@ -476,7 +520,7 @@ static void phy_force_reduction(struct p
int idx;
idx = phy_find_setting(phydev->speed, phydev->duplex);
@ -62,7 +62,7 @@
idx = phy_find_valid(idx, phydev->supported);
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -515,6 +515,7 @@ void phy_start_machine(struct phy_device
@@ -542,6 +542,7 @@ void phy_start_machine(struct phy_device
void phy_stop_machine(struct phy_device *phydev);
int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);

@ -1,6 +1,6 @@
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -393,9 +393,18 @@ struct phy_driver {
@@ -408,9 +408,18 @@ struct phy_driver {
*/
int (*config_aneg)(struct phy_device *phydev);
@ -21,7 +21,7 @@
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -705,6 +705,9 @@ int genphy_update_link(struct phy_device
@@ -796,6 +796,9 @@ int genphy_update_link(struct phy_device
{
int status;
@ -33,7 +33,7 @@
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -106,6 +106,9 @@ static inline int phy_aneg_done(struct p
@@ -108,6 +108,9 @@ static inline int phy_aneg_done(struct p
{
int retval;

@ -9,7 +9,7 @@
/**
* mdiobus_alloc_size - allocate a mii_bus structure
* @size: extra amount of memory to allocate for private storage.
@@ -228,15 +230,33 @@
@@ -228,15 +230,33 @@ void mdiobus_free(struct mii_bus *bus)
}
EXPORT_SYMBOL(mdiobus_free);
@ -45,7 +45,7 @@
phy_device_free(phydev);
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -543,4 +543,22 @@ int __init mdio_bus_init(void);
@@ -575,4 +575,22 @@ int __init mdio_bus_init(void);
void mdio_bus_exit(void);
extern struct bus_type mdio_bus_type;

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -106,6 +106,13 @@ config MICREL_PHY
@@ -116,6 +116,13 @@ config MICREL_PHY
---help---
Supports the KSZ9021, VSC8201, KS8001 PHYs.
@ -16,9 +16,9 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -16,6 +16,7 @@ obj-$(CONFIG_VITESSE_PHY) += vitesse.o
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
+obj-$(CONFIG_ADM6996_PHY) += adm6996.o
obj-$(CONFIG_REALTEK_PHY) += realtek.o

@ -1,6 +1,6 @@
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1078,6 +1078,11 @@ struct net_device {
@@ -1102,6 +1102,11 @@ struct net_device {
const struct net_device_ops *netdev_ops;
const struct ethtool_ops *ethtool_ops;
@ -12,7 +12,7 @@
/* Hardware header description */
const struct header_ops *header_ops;
@@ -1134,6 +1139,9 @@ struct net_device {
@@ -1158,6 +1163,9 @@ struct net_device {
void *ax25_ptr; /* AX.25 specific data */
struct wireless_dev *ieee80211_ptr; /* IEEE 802.11 specific data,
assign before registering */
@ -34,21 +34,21 @@
#define IF_GET_IFACE 0x0001 /* for querying only */
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -1661,6 +1661,10 @@ extern struct sk_buff *dev_alloc_skb(uns
extern struct sk_buff *__netdev_alloc_skb(struct net_device *dev,
unsigned int length, gfp_t gfp_mask);
@@ -1656,6 +1656,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
+extern struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
+ unsigned int length, gfp_t gfp);
+
+
/**
* netdev_alloc_skb - allocate an skbuff for rx on a specific device
* @dev: network device to receive on
@@ -1680,16 +1684,6 @@ static inline struct sk_buff *netdev_all
return __netdev_alloc_skb(dev, length, GFP_ATOMIC);
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
@@ -1758,16 +1762,6 @@ static inline struct sk_buff *dev_alloc_
}
-static inline struct sk_buff *__netdev_alloc_skb_ip_align(struct net_device *dev,
- unsigned int length, gfp_t gfp)
-{
@ -79,7 +79,7 @@
help
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2267,9 +2267,19 @@ int dev_hard_start_xmit(struct sk_buff *
@@ -2243,9 +2243,19 @@ int dev_hard_start_xmit(struct sk_buff *
}
}
@ -102,7 +102,7 @@
if (rc == NETDEV_TX_OK)
txq_trans_update(txq);
return rc;
@@ -2289,9 +2299,19 @@ gso:
@@ -2265,9 +2275,19 @@ gso:
if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
skb_dst_drop(nskb);
@ -127,7 +127,7 @@
goto out_kfree_gso_skb;
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -58,6 +58,7 @@
@@ -60,6 +60,7 @@
#include <linux/scatterlist.h>
#include <linux/errqueue.h>
#include <linux/prefetch.h>
@ -135,7 +135,7 @@
#include <net/protocol.h>
#include <net/dst.h>
@@ -320,6 +321,22 @@ struct sk_buff *__netdev_alloc_skb(struc
@@ -441,6 +442,22 @@ struct sk_buff *__netdev_alloc_skb(struc
}
EXPORT_SYMBOL(__netdev_alloc_skb);
@ -156,11 +156,11 @@
+EXPORT_SYMBOL(__netdev_alloc_skb_ip_align);
+
void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, int off,
int size)
int size, unsigned int truesize)
{
--- a/net/ethernet/eth.c
+++ b/net/ethernet/eth.c
@@ -160,6 +160,12 @@ __be16 eth_type_trans(struct sk_buff *sk
@@ -159,6 +159,12 @@ __be16 eth_type_trans(struct sk_buff *sk
struct ethhdr *eth;
skb->dev = dev;

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -113,6 +113,10 @@ config ADM6996_PHY
@@ -123,6 +123,10 @@ config ADM6996_PHY
Currently supports the ADM6996FC and ADM6996M switches.
Support for FC is very limited.
@ -13,8 +13,8 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -17,6 +17,7 @@ obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
@@ -18,6 +18,7 @@ obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
+obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -117,6 +117,10 @@ config MVSWITCH_PHY
@@ -127,6 +127,10 @@ config MVSWITCH_PHY
tristate "Driver for Marvell 88E6060 switches"
select ETHERNET_PACKET_MANGLE
@ -13,7 +13,7 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -18,6 +18,7 @@ obj-$(CONFIG_BCM63XX_PHY) += bcm63xx.o
@@ -19,6 +19,7 @@ obj-$(CONFIG_BCM87XX_PHY) += bcm87xx.o
obj-$(CONFIG_ICPLUS_PHY) += icplus.o
obj-$(CONFIG_ADM6996_PHY) += adm6996.o
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -121,6 +121,11 @@ config IP17XX_PHY
@@ -131,6 +131,11 @@ config IP17XX_PHY
tristate "Driver for IC+ IP17xx switches"
select SWCONFIG
@ -14,7 +14,7 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_ADM6996_PHY) += adm6996.o
@@ -21,6 +21,7 @@ obj-$(CONFIG_ADM6996_PHY) += adm6996.o
obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
obj-$(CONFIG_REALTEK_PHY) += realtek.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -126,6 +126,10 @@ config AR8216_PHY
@@ -136,6 +136,10 @@ config AR8216_PHY
select ETHERNET_PACKET_MANGLE
select SWCONFIG
@ -13,7 +13,7 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -21,6 +21,7 @@ obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
@@ -22,6 +22,7 @@ obj-$(CONFIG_MVSWITCH_PHY) += mvswitch.o
obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
obj-$(CONFIG_REALTEK_PHY) += realtek.o
obj-$(CONFIG_AR8216_PHY) += ar8216.o

@ -1,8 +1,8 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -168,6 +168,30 @@ config MDIO_OCTEON
If in doubt, say Y.
@@ -197,6 +197,30 @@ config MDIO_BUS_MUX_GPIO
several child MDIO busses to a parent bus. Child bus
selection is under the control of GPIO lines.
+config RTL8366_SMI
+ tristate "Driver for the RTL8366 SMI interface"
@ -33,7 +33,7 @@
config MICREL_KS8995MA
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -22,6 +22,9 @@ obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
@@ -23,6 +23,9 @@ obj-$(CONFIG_IP17XX_PHY) += ip17xx.o
obj-$(CONFIG_REALTEK_PHY) += realtek.o
obj-$(CONFIG_AR8216_PHY) += ar8216.o
obj-$(CONFIG_RTL8306_PHY) += rtl8306.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -190,6 +190,10 @@ config RTL8366RB_PHY
@@ -219,6 +219,10 @@ config RTL8366RB_PHY
tristate "Driver for the Realtek RTL8366RB switch"
select SWCONFIG
@ -13,7 +13,7 @@
endif # PHYLIB
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -25,6 +25,7 @@ obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
@@ -26,6 +26,7 @@ obj-$(CONFIG_RTL8306_PHY) += rtl8306.o
obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi.o
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -130,6 +130,11 @@ config RTL8306_PHY
@@ -140,6 +140,11 @@ config RTL8306_PHY
tristate "Driver for Realtek RTL8306S switches"
select SWCONFIG
@ -14,7 +14,7 @@
depends on PHYLIB=y
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -27,6 +27,7 @@ obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
@@ -28,6 +28,7 @@ obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -199,6 +199,10 @@ config RTL8367_PHY
@@ -228,6 +228,10 @@ config RTL8367_PHY
tristate "Driver for the Realtek RTL8367R/M switches"
select SWCONFIG
@ -13,7 +13,7 @@
endif # PHYLIB
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -26,6 +26,7 @@ obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi
@@ -27,6 +27,7 @@ obj-$(CONFIG_RTL8366_SMI) += rtl8366_smi
obj-$(CONFIG_RTL8366S_PHY) += rtl8366s.o
obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb.o
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o

@ -1,6 +1,6 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -206,3 +206,8 @@ endif # PHYLIB
@@ -239,3 +239,8 @@ endif # PHYLIB
config MICREL_KS8995MA
tristate "Micrel KS8995MA 5-ports 10/100 managed Ethernet switch"
depends on SPI
@ -11,8 +11,8 @@
+ select ETHERNET_PACKET_MANGLE
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -28,6 +28,7 @@ obj-$(CONFIG_RTL8366RB_PHY) += rtl8366rb
obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
@@ -30,6 +30,7 @@ obj-$(CONFIG_RTL8367_PHY) += rtl8367.o
obj-$(CONFIG_RTL8367B_PHY) += rtl8367b.o
obj-$(CONFIG_LSI_ET1011C_PHY) += et1011c.o
obj-$(CONFIG_MICREL_PHY) += micrel.o
+obj-$(CONFIG_PSB6970_PHY) += psb6970.o

@ -64,7 +64,7 @@
#endif /* HOSTAP_H */
--- a/drivers/net/wireless/hostap/hostap_hw.c
+++ b/drivers/net/wireless/hostap/hostap_hw.c
@@ -932,6 +932,7 @@ static int hfa384x_set_rid(struct net_de
@@ -928,6 +928,7 @@ static int hfa384x_set_rid(struct net_de
prism2_hw_reset(dev);
}

@ -1,6 +1,6 @@
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -51,6 +51,12 @@ config XEN_PCIDEV_FRONTEND
@@ -64,6 +64,12 @@ config XEN_PCIDEV_FRONTEND
The PCI device frontend driver allows the kernel to import arbitrary
PCI devices from a PCI backend to support PCI driver domains.
@ -15,15 +15,15 @@
default y
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -105,6 +105,7 @@ static void __devinit quirk_mmio_always_
}
DECLARE_PCI_FIXUP_EARLY(PCI_ANY_ID, PCI_ANY_ID, quirk_mmio_always_on);
@@ -44,6 +44,7 @@ static void __devinit quirk_mmio_always_
DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_BRIDGE_HOST, 8, quirk_mmio_always_on);
+#ifndef CONFIG_PCI_DISABLE_COMMON_QUIRKS
/* The Mellanox Tavor device gives false positive parity errors
* Mark this device with a broken_parity_status, to allow
* PCI scanning code to "skip" this now blacklisted device.
@@ -1990,7 +1991,9 @@ static void __devinit fixup_rev1_53c810(
@@ -1933,7 +1934,9 @@ static void __devinit fixup_rev1_53c810(
}
}
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_NCR, PCI_DEVICE_ID_NCR_53C810, fixup_rev1_53c810);
@ -33,9 +33,9 @@
/* Enable 1k I/O space granularity on the Intel P64H2 */
static void __devinit quirk_p64h2_1k_io(struct pci_dev *dev)
{
@@ -2666,6 +2669,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
@@ -2605,6 +2608,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_AT
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_ATTANSIC, 0x1083,
quirk_msi_intx_disable_bug);
#endif /* CONFIG_PCI_MSI */
+#endif /* !CONFIG_PCI_DISABLE_COMMON_QUIRKS */

@ -1,7 +1,7 @@
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -432,6 +432,8 @@ reset_needed:
@@ -434,6 +434,8 @@ reset_needed:
}
EXPORT_SYMBOL_GPL(uhci_check_and_reset_hc);
@ -10,29 +10,8 @@
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
{
u16 cmd;
@@ -928,3 +930,5 @@ static void __devinit quirk_usb_early_ha
pci_disable_device(pdev);
@@ -964,3 +966,4 @@ static void __devinit quirk_usb_early_ha
}
DECLARE_PCI_FIXUP_FINAL(PCI_ANY_ID, PCI_ANY_ID, quirk_usb_early_handoff);
+
+#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) {}
DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
+#endif
+#else
static inline void usb_amd_quirk_pll_disable(void) {}
static inline void usb_amd_quirk_pll_enable(void) {}
static inline void usb_amd_dev_put(void) {}

@ -1,6 +1,6 @@
--- a/drivers/usb/core/usb.c
+++ b/drivers/usb/core/usb.c
@@ -652,6 +652,71 @@ int __usb_get_extra_descriptor(char *buf
@@ -653,6 +653,71 @@ int __usb_get_extra_descriptor(char *buf
}
EXPORT_SYMBOL_GPL(__usb_get_extra_descriptor);
@ -74,7 +74,7 @@
* @dev: device the buffer will be used with
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -531,6 +531,7 @@ extern int usb_lock_device_for_reset(str
@@ -584,6 +584,7 @@ extern int usb_lock_device_for_reset(str
extern int usb_reset_device(struct usb_device *dev);
extern void usb_queue_reset_device(struct usb_interface *dev);

@ -1,8 +1,8 @@
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -480,4 +480,8 @@ config LEDS_TRIGGER_DEFAULT_ON
comment "iptables trigger is under Netfilter config (LED target)"
depends on LEDS_TRIGGERS
@@ -537,4 +537,8 @@ config LEDS_TRIGGER_TRANSIENT
GPIO/PWM based hardware.
If unsure, say Y.
+config LEDS_TRIGGER_MORSE
+ tristate "LED Morse Trigger"
@ -11,10 +11,10 @@
endif # NEW_LEDS
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -57,3 +57,4 @@ obj-$(CONFIG_LEDS_TRIGGER_HEARTBEAT) +=
obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) += ledtrig-backlight.o
@@ -63,3 +63,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
+obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
--- a/drivers/leds/ledtrig-morse.c
+++ b/drivers/leds/ledtrig-morse.c

@ -1,6 +1,6 @@
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -484,4 +484,11 @@ config LEDS_TRIGGER_MORSE
@@ -541,4 +541,11 @@ config LEDS_TRIGGER_MORSE
tristate "LED Morse Trigger"
depends on LEDS_TRIGGERS
@ -14,9 +14,9 @@
endif # NEW_LEDS
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -58,3 +58,4 @@ obj-$(CONFIG_LEDS_TRIGGER_BACKLIGHT) +=
obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledtrig-gpio.o
@@ -64,3 +64,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
+obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
--- a/drivers/leds/ledtrig-netdev.c

@ -1,6 +1,6 @@
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
@@ -491,4 +491,11 @@ config LEDS_TRIGGER_NETDEV
@@ -548,4 +548,11 @@ config LEDS_TRIGGER_NETDEV
This allows LEDs to be controlled by network device activity.
If unsure, say Y.
@ -14,8 +14,8 @@
endif # NEW_LEDS
--- a/drivers/leds/Makefile
+++ b/drivers/leds/Makefile
@@ -59,3 +59,4 @@ obj-$(CONFIG_LEDS_TRIGGER_GPIO) += ledt
obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) += ledtrig-default-on.o
@@ -65,3 +65,4 @@ obj-$(CONFIG_LEDS_TRIGGER_DEFAULT_ON) +=
obj-$(CONFIG_LEDS_TRIGGER_TRANSIENT) += ledtrig-transient.o
obj-$(CONFIG_LEDS_TRIGGER_MORSE) += ledtrig-morse.o
obj-$(CONFIG_LEDS_TRIGGER_NETDEV) += ledtrig-netdev.o
+obj-$(CONFIG_LEDS_TRIGGER_USBDEV) += ledtrig-usbdev.o

@ -1,6 +1,6 @@
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -719,6 +719,15 @@ config RTC_DRV_NUC900
@@ -716,6 +716,15 @@ config RTC_DRV_NUC900
If you say yes here you get support for the RTC subsystem of the
NUC910/NUC920 used in embedded systems.
@ -18,7 +18,7 @@
config RTC_DRV_DAVINCI
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -86,6 +86,7 @@ obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c
@@ -89,6 +89,7 @@ obj-$(CONFIG_RTC_DRV_RP5C01) += rtc-rp5c
obj-$(CONFIG_RTC_DRV_RS5C313) += rtc-rs5c313.o
obj-$(CONFIG_RTC_DRV_RS5C348) += rtc-rs5c348.o
obj-$(CONFIG_RTC_DRV_RS5C372) += rtc-rs5c372.o

@ -1,6 +1,6 @@
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -379,6 +379,15 @@ config RTC_DRV_RV3029C2
@@ -389,6 +389,15 @@ config RTC_DRV_RV3029C2
This driver can also be built as a module. If so, the module
will be called rtc-rv3029c2.
@ -18,7 +18,7 @@
comment "SPI RTC drivers"
--- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile
@@ -79,6 +79,7 @@ obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030
@@ -82,6 +82,7 @@ obj-$(CONFIG_RTC_DRV_PL030) += rtc-pl030
obj-$(CONFIG_RTC_DRV_PL031) += rtc-pl031.o
obj-$(CONFIG_RTC_DRV_PM8XXX) += rtc-pm8xxx.o
obj-$(CONFIG_RTC_DRV_PS3) += rtc-ps3.o

@ -345,7 +345,7 @@ Please use the new mainline SPI-GPIO driver, as of 2.6.29.
+MODULE_LICENSE("GPL v2");
--- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig
@@ -154,6 +154,15 @@ config SPI_GPIO
@@ -169,6 +169,15 @@ config SPI_GPIO
GPIO operations, you should be able to leverage that for better
speed with a custom version of this driver; see the source code.
@ -363,7 +363,7 @@ Please use the new mainline SPI-GPIO driver, as of 2.6.29.
depends on ARCH_MXC
--- a/drivers/spi/Makefile
+++ b/drivers/spi/Makefile
@@ -29,6 +29,7 @@ obj-$(CONFIG_SPI_FSL_LIB) += spi-fsl-li
@@ -31,6 +31,7 @@ obj-$(CONFIG_SPI_FSL_LIB) += spi-fsl-li
obj-$(CONFIG_SPI_FSL_ESPI) += spi-fsl-espi.o
obj-$(CONFIG_SPI_FSL_SPI) += spi-fsl-spi.o
obj-$(CONFIG_SPI_GPIO) += spi-gpio.o

@ -612,7 +612,7 @@
+module_exit(gpiommc_modexit);
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -474,6 +474,31 @@ config MMC_SDHI
@@ -467,6 +467,31 @@ config MMC_SDHI
This provides support for the SDHI SD/SDIO controller found in
SuperH and ARM SH-Mobile SoCs
@ -646,14 +646,14 @@
depends on PCI
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -37,6 +37,7 @@ tmio_mmc_core-$(subst m,y,$(CONFIG_MMC_S
@@ -36,6 +36,7 @@ tmio_mmc_core-$(subst m,y,$(CONFIG_MMC_S
obj-$(CONFIG_MMC_SDHI) += sh_mobile_sdhi.o
obj-$(CONFIG_MMC_CB710) += cb710-mmc.o
obj-$(CONFIG_MMC_VIA_SDMMC) += via-sdmmc.o
+obj-$(CONFIG_GPIOMMC) += gpiommc.o
obj-$(CONFIG_SDH_BFIN) += bfin_sdh.o
obj-$(CONFIG_MMC_DW) += dw_mmc.o
obj-$(CONFIG_MMC_SH_MMCIF) += sh_mmcif.o
obj-$(CONFIG_MMC_DW_PLTFM) += dw_mmc-pltfm.o
--- /dev/null
+++ b/include/linux/mmc/gpiommc.h
@@ -0,0 +1,71 @@
@ -830,7 +830,7 @@
+be done automatically.
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -3045,6 +3045,11 @@ L: linuxppc-dev@lists.ozlabs.org
@@ -3188,6 +3188,11 @@ L: linuxppc-dev@lists.ozlabs.org
S: Odd Fixes
F: drivers/tty/hvc/
@ -841,4 +841,4 @@
+
HARDWARE MONITORING
M: Jean Delvare <khali@linux-fr.org>
M: Guenter Roeck <guenter.roeck@ericsson.com>
M: Guenter Roeck <linux@roeck-us.net>

@ -11,11 +11,11 @@
source "drivers/power/Kconfig"
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -8,6 +8,7 @@
# GPIO must come after pinctrl as gpios may need to mux pins etc
obj-y += pinctrl/
@@ -10,6 +10,7 @@ obj-y += pinctrl/
obj-y += gpio/
+obj-$(CONFIG_GENERIC_PWM) += pwm/
obj-y += pwm/
obj-$(CONFIG_PCI) += pci/
+obj-$(CONFIG_GENERIC_PWM) += pwm/
obj-$(CONFIG_PARISC) += parisc/
obj-$(CONFIG_RAPIDIO) += rapidio/
obj-y += video/

@ -1,6 +1,6 @@
--- a/drivers/hwmon/Kconfig
+++ b/drivers/hwmon/Kconfig
@@ -423,6 +423,15 @@ config SENSORS_GL520SM
@@ -434,6 +434,15 @@ config SENSORS_GL520SM
This driver can also be built as a module. If so, the module
will be called gl520sm.
@ -15,10 +15,10 @@
+
config SENSORS_GPIO_FAN
tristate "GPIO fan"
depends on GENERIC_GPIO
depends on GPIOLIB
--- a/drivers/hwmon/Makefile
+++ b/drivers/hwmon/Makefile
@@ -125,6 +125,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l7
@@ -129,6 +129,7 @@ obj-$(CONFIG_SENSORS_W83L785TS) += w83l7
obj-$(CONFIG_SENSORS_W83L786NG) += w83l786ng.o
obj-$(CONFIG_SENSORS_WM831X) += wm831x-hwmon.o
obj-$(CONFIG_SENSORS_WM8350) += wm8350-hwmon.o

@ -1,6 +1,6 @@
--- a/include/linux/slab.h
+++ b/include/linux/slab.h
@@ -127,8 +127,8 @@ unsigned int kmem_cache_size(struct kmem
@@ -151,8 +151,8 @@ unsigned int kmem_cache_size(struct kmem
* to do various tricks to work around compiler limitations in order to
* ensure proper constant folding.
*/

@ -1,6 +1,6 @@
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -50,6 +50,18 @@ static const char *kobject_actions[] = {
@@ -51,6 +51,18 @@ static const char *kobject_actions[] = {
[KOBJ_OFFLINE] = "offline",
};

@ -39,7 +39,7 @@
#endif /* _KOBJECT_H_ */
--- a/lib/kobject_uevent.c
+++ b/lib/kobject_uevent.c
@@ -381,6 +381,43 @@ int add_uevent_var(struct kobj_uevent_en
@@ -382,6 +382,43 @@ int add_uevent_var(struct kobj_uevent_en
EXPORT_SYMBOL_GPL(add_uevent_var);
#if defined(CONFIG_NET)

@ -1,6 +1,6 @@
--- a/init/main.c
+++ b/init/main.c
@@ -816,7 +816,7 @@ static int __init kernel_init(void * unu
@@ -868,7 +868,7 @@ static int __init kernel_init(void * unu
/* Open the /dev/console on the rootfs, this should never fail */
if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)

@ -1,6 +1,6 @@
--- a/init/main.c
+++ b/init/main.c
@@ -774,10 +774,7 @@ static noinline int init_post(void)
@@ -826,10 +826,7 @@ static noinline int init_post(void)
printk(KERN_WARNING "Failed to execute %s. Attempting "
"defaults...\n", execute_command);
}

@ -20,7 +20,7 @@
+#endif
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -926,6 +926,10 @@ config RELAY
@@ -1105,6 +1105,10 @@ config RELAY
If unsure, say N.
@ -33,7 +33,7 @@
depends on BROKEN || !FRV
--- a/kernel/Makefile
+++ b/kernel/Makefile
@@ -107,6 +107,7 @@ obj-$(CONFIG_USER_RETURN_NOTIFIER) += us
@@ -110,6 +110,7 @@ obj-$(CONFIG_USER_RETURN_NOTIFIER) += us
obj-$(CONFIG_PADATA) += padata.o
obj-$(CONFIG_CRASH_DUMP) += crash_dump.o
obj-$(CONFIG_JUMP_LABEL) += jump_label.o
@ -274,7 +274,7 @@
static struct memblock_region memblock_memory_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock;
static struct memblock_region memblock_reserved_init_regions[INIT_MEMBLOCK_REGIONS] __initdata_memblock;
@@ -305,6 +306,8 @@ static void __init_memblock memblock_ins
@@ -341,6 +342,8 @@ static void __init_memblock memblock_ins
memblock_set_region_node(rgn, nid);
type->cnt++;
type->total_size += size;

@ -1,6 +1,6 @@
--- a/crypto/Kconfig
+++ b/crypto/Kconfig
@@ -968,3 +968,6 @@ config CRYPTO_USER_API_SKCIPHER
@@ -1052,3 +1052,6 @@ config CRYPTO_USER_API_SKCIPHER
source "drivers/crypto/Kconfig"
endif # if CRYPTO

@ -1,8 +1,8 @@
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -131,6 +131,9 @@
* void add_interrupt_randomness(int irq, int irq_flags);
* void add_disk_randomness(struct gendisk *disk);
@@ -139,6 +139,9 @@
* that might otherwise be identical and have very little entropy
* available to them (particularly common in the embedded world).
*
+ * void random_input_words(__u32 *buf, size_t wordcount, int ent_count)
+ * int random_input_wait(void);
@ -24,7 +24,7 @@
* All of these routines try to estimate how many bits of randomness a
* particular randomness source. They do this by keeping track of the
* first and second order deltas of the event timings.
@@ -796,6 +806,63 @@ void add_disk_randomness(struct gendisk
@@ -799,6 +809,63 @@ void add_disk_randomness(struct gendisk
}
#endif
@ -90,7 +90,7 @@
* Entropy extraction routines
--- a/fs/fcntl.c
+++ b/fs/fcntl.c
@@ -142,6 +142,7 @@ SYSCALL_DEFINE1(dup, unsigned int, filde
@@ -143,6 +143,7 @@ SYSCALL_DEFINE1(dup, unsigned int, filde
}
return ret;
}

@ -1,6 +1,6 @@
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -2490,6 +2490,16 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);
@@ -2902,6 +2902,16 @@ EXPORT_SYMBOL_GPL(shmem_truncate_range);
/* common code */
@ -17,7 +17,7 @@
/**
* shmem_file_setup - get an unlinked file living in tmpfs
* @name: name for dentry (to be seen in /proc/<pid>/maps
@@ -2567,11 +2577,8 @@ int shmem_zero_setup(struct vm_area_stru
@@ -2979,11 +2989,8 @@ int shmem_zero_setup(struct vm_area_stru
if (IS_ERR(file))
return PTR_ERR(file);
@ -33,7 +33,7 @@
--- a/fs/file.c
+++ b/fs/file.c
@@ -268,6 +268,7 @@ int expand_files(struct files_struct *fi
@@ -269,6 +269,7 @@ int expand_files(struct files_struct *fi
/* All good, so we try */
return expand_fdtable(files, nr);
}
@ -43,7 +43,7 @@
{
--- a/kernel/exit.c
+++ b/kernel/exit.c
@@ -500,6 +500,7 @@ struct files_struct *get_files_struct(st
@@ -513,6 +513,7 @@ struct files_struct *get_files_struct(st
return files;
}
@ -51,7 +51,7 @@
void put_files_struct(struct files_struct *files)
{
@@ -521,6 +522,7 @@ void put_files_struct(struct files_struc
@@ -534,6 +535,7 @@ void put_files_struct(struct files_struc
rcu_read_unlock();
}
}
@ -61,7 +61,7 @@
{
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -3854,6 +3854,7 @@ int can_nice(const struct task_struct *p
@@ -4106,6 +4106,7 @@ int can_nice(const struct task_struct *p
return (nice_rlim <= task_rlimit(p, RLIMIT_NICE) ||
capable(CAP_SYS_NICE));
}
@ -71,25 +71,17 @@
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1412,6 +1412,7 @@ unsigned long zap_page_range(struct vm_a
tlb_finish_mmu(&tlb, address, end);
return end;
@@ -1408,6 +1408,7 @@ void zap_page_range(struct vm_area_struc
mmu_notifier_invalidate_range_end(mm, start, end);
tlb_finish_mmu(&tlb, start, end);
}
+EXPORT_SYMBOL_GPL(zap_page_range);
/**
* zap_vma_ptes - remove ptes mapping the vma
@@ -3087,6 +3088,7 @@ static inline int check_stack_guard_page
}
return 0;
}
+EXPORT_SYMBOL_GPL(vmtruncate_range);
/*
* We enter with non-exclusive mmap_sem (to exclude vma changes,
* zap_page_range_single - remove user pages in a given range
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -1257,6 +1257,7 @@ void unmap_kernel_range(unsigned long ad
@@ -1266,6 +1266,7 @@ void unmap_kernel_range(unsigned long ad
vunmap_page_range(addr, end);
flush_tlb_kernel_range(addr, end);
}
@ -97,21 +89,22 @@
int map_vm_area(struct vm_struct *area, pgprot_t prot, struct page ***pages)
{
@@ -1394,6 +1395,7 @@ struct vm_struct *get_vm_area(unsigned l
@@ -1403,6 +1404,7 @@ struct vm_struct *get_vm_area(unsigned l
return __get_vm_area_node(size, 1, flags, VMALLOC_START, VMALLOC_END,
-1, GFP_KERNEL, __builtin_return_address(0));
}
+EXPORT_SYMBOL_GPL(get_vm_area);
struct vm_struct *get_vm_area_caller(unsigned long size, unsigned long flags,
void *caller)
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -872,6 +872,7 @@ extern bool skip_free_areas_node(unsigne
int shmem_lock(struct file *file, int lock, struct user_struct *user);
struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags);
+void shmem_set_file(struct vm_area_struct *vma, struct file *file);
int shmem_zero_setup(struct vm_area_struct *);
extern int can_do_mlock(void);
const void *caller)
--- a/include/linux/shmem_fs.h
+++ b/include/linux/shmem_fs.h
@@ -46,6 +46,8 @@ extern int shmem_init(void);
extern int shmem_fill_super(struct super_block *sb, void *data, int silent);
extern struct file *shmem_file_setup(const char *name,
loff_t size, unsigned long flags);
+
+extern void shmem_set_file(struct vm_area_struct *vma, struct file *file);
extern int shmem_zero_setup(struct vm_area_struct *);
extern int shmem_lock(struct file *file, int lock, struct user_struct *user);
extern void shmem_unlock_mapping(struct address_space *mapping);

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save