Hi Linus, On Tue, 10 Sep 2013 15:44:00 -0700 Andrew Morton wrote: > > On Tue, 10 Sep 2013 15:35:04 -0700 Linus Torvalds wrote: > > > So I'd (once again) suggest you base your pile of patches on the > > previous stable kernel, and that linux-next take it *first* rather > > than take it last. > > That's what we're now doing. But this particular patchset was > different because it's changing multiple subsystems, several of which > are concurrently being changed in an uncoordinated fashion. Yeah, Andrew and I came to an arrangement this round so that almost all of his series is based only on your tree. Currently I have 375 patches based on v3.11-rc7-14-gfa8218d in a branch that I just merge each day. The remaining bit (which contains the series that caused this thread) is now only 38 patches (after removing the stuff that Al has taken) is still rebased on top of linux-next each day due to dependencies on other trees in linux-next. (Yes, I know this is not ideal, but it is a work in progress.) So, Andrew, you should be able to just about send those 375 patches to Linus (I know that there may be some fix folding to do before that) and have him apply them on top of v3.11-rc7-14-gfa8218d in a separate branch and then merge that branch. I have included the "git diff-tree --cc" output from my merge of that into linux-next yesterday. Some of it is not applicable yet (since there are still some other outstanding trees), but it gives you some idea of how little the merge is a problem. I hope this is helpful. -- Cheers, Stephen Rothwell sfr@canb.auug.org.au diff --cc arch/s390/kernel/kprobes.c index adbbe7f,cb7ac9e..0ce9fb2 --- a/arch/s390/kernel/kprobes.c +++ b/arch/s390/kernel/kprobes.c @@@ -100,17 -120,13 +120,16 @@@ static int __kprobes get_fixup_type(kpr fixup |= FIXUP_RETURN_REGISTER; break; case 0xc0: - if ((insn[0] & 0x0f) == 0x00 || /* larl */ - (insn[0] & 0x0f) == 0x05) /* brasl */ - fixup |= FIXUP_RETURN_REGISTER; + if ((insn[0] & 0x0f) == 0x05) /* brasl */ + fixup |= FIXUP_RETURN_REGISTER; break; case 0xeb: - if ((insn[2] & 0xff) == 0x44 || /* bxhg */ - (insn[2] & 0xff) == 0x45) /* bxleg */ + switch (insn[2] & 0xff) { + case 0x44: /* bxhg */ + case 0x45: /* bxleg */ fixup = FIXUP_BRANCH_NOT_TAKEN; + break; + } break; case 0xe3: /* bctg */ if ((insn[2] & 0xff) == 0x46) diff --cc arch/x86/lib/csum-wrappers_64.c index 7609e0e,aaba241..2528500 --- a/arch/x86/lib/csum-wrappers_64.c +++ b/arch/x86/lib/csum-wrappers_64.c @@@ -4,9 -4,9 +4,10 @@@ * * Wrappers of assembly checksum functions for x86-64. */ + #include #include #include +#include /** * csum_partial_copy_from_user - Copy and checksum from user space. diff --cc drivers/staging/lustre/lustre/llite/remote_perm.c index dedd56a,ceac936..50de0f0 --- a/drivers/staging/lustre/lustre/llite/remote_perm.c +++ b/drivers/staging/lustre/lustre/llite/remote_perm.c @@@ -44,7 -44,9 +44,8 @@@ #define DEBUG_SUBSYSTEM S_LLITE #include + #include #include -#include #include #include diff --cc fs/fat/file.c index 33711ff,00b5810..26c8e32 --- a/fs/fat/file.c +++ b/fs/fat/file.c @@@ -148,6 -151,22 +151,22 @@@ static long fat_generic_compat_ioctl(st static int fat_file_release(struct inode *inode, struct file *filp) { + + struct super_block *sb = inode->i_sb; + loff_t mmu_private_ideal; + + /* + * Release unwritten fallocated blocks on file release. + * Do this only when the last open file descriptor is closed. + */ + mutex_lock(&inode->i_mutex); + mmu_private_ideal = round_up(inode->i_size, sb->s_blocksize); + + if (mmu_private_ideal < MSDOS_I(inode)->mmu_private && - filp->f_dentry->d_count == 1) ++ d_count(filp->f_dentry) == 1) + fat_truncate_blocks(inode, inode->i_size); + mutex_unlock(&inode->i_mutex); + if ((filp->f_mode & FMODE_WRITE) && MSDOS_SB(inode->i_sb)->options.flush) { fat_flush_inodes(inode->i_sb, inode, NULL); diff --cc fs/xfs/xfs_mount.c index 5dcc680,eb9ba15..65dbf17 --- a/fs/xfs/xfs_mount.c +++ b/fs/xfs/xfs_mount.c @@@ -15,9 -15,10 +15,10 @@@ * along with this program; if not, write the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ + #include #include "xfs.h" #include "xfs_fs.h" -#include "xfs_types.h" +#include "xfs_format.h" #include "xfs_bit.h" #include "xfs_log.h" #include "xfs_inum.h" diff --cc kernel/fork.c index fb4406b,04a8c2a..5ede60b --- a/kernel/fork.c +++ b/kernel/fork.c @@@ -1173,13 -1171,15 +1171,16 @@@ static struct task_struct *copy_process return ERR_PTR(-EINVAL); /* - * If the new process will be in a different pid namespace - * don't allow the creation of threads. + * If the new process will be in a different pid or user namespace + * do not allow it to share a thread group or signal handlers or + * parent with the forking task. */ - if ((clone_flags & (CLONE_VM|CLONE_NEWPID)) && - (task_active_pid_ns(current) != - current->nsproxy->pid_ns_for_children)) - return ERR_PTR(-EINVAL); + if (clone_flags & (CLONE_SIGHAND | CLONE_PARENT)) { + if ((clone_flags & (CLONE_NEWUSER | CLONE_NEWPID)) || - (task_active_pid_ns(current) != current->nsproxy->pid_ns)) ++ (task_active_pid_ns(current) != ++ current->nsproxy->pid_ns_for_children)) + return ERR_PTR(-EINVAL); + } retval = security_task_create(clone_flags); if (retval) diff --cc kernel/watchdog.c index 51c4f34,410d5bb..373d3e1 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@@ -553,6 -607,14 +607,6 @@@ void __init lockup_detector_init(void { set_sample_period(); -#ifdef CONFIG_NO_HZ_FULL - if (watchdog_user_enabled) { - watchdog_user_enabled = 0; - pr_warning("Disabled lockup detectors by default for full dynticks\n"); - pr_warning("You can reactivate it with 'sysctl -w kernel.watchdog=1'\n"); - } -#endif - if (watchdog_user_enabled) - watchdog_enable_all_cpus(); + watchdog_enable_all_cpus(false); }