Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1686736 > unrolled thread
| Started by | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| First post | 2017-07-13 18:10 +0200 |
| Last post | 2017-07-14 13:50 +0200 |
| Articles | 8 — 3 participants |
Back to article view | Back to linux.kernel
[PATCH 4.12 00/10] 4.12.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-13 18:10 +0200
[PATCH 4.12 03/10] proc: Fix proc_sys_prune_dcache to hold a sb reference Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-13 18:10 +0200
[PATCH 4.12 02/10] imx-serial: RX DMA startup latency Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-13 18:10 +0200
Re: [PATCH 4.12 00/10] 4.12.2-stable review Guenter Roeck <linux@roeck-us.net> - 2017-07-14 04:10 +0200
Re: [PATCH 4.12 00/10] 4.12.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-14 12:00 +0200
Re: [PATCH 4.12 00/10] 4.12.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-14 12:00 +0200
Re: [PATCH 4.12 00/10] 4.12.2-stable review Mark Brown <broonie@kernel.org> - 2017-07-14 13:20 +0200
Re: [PATCH 4.12 00/10] 4.12.2-stable review Greg Kroah-Hartman <gregkh@linuxfoundation.org> - 2017-07-14 13:50 +0200
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-13 18:10 +0200 |
| Subject | [PATCH 4.12 00/10] 4.12.2-stable review |
| Message-ID | <u2Oxm-7s0-65@gated-at.bofh.it> |
This is the start of the stable review cycle for the 4.12.2 release.
There are 10 patches in this series, all will be posted as a response
to this one. If anyone has any issues with these being applied, please
let me know.
Responses should be made by Sat Jul 15 15:40:02 UTC 2017.
Anything received after that time might be too late.
The whole patch series can be found in one patch at:
kernel.org/pub/linux/kernel/v4.x/stable-review/patch-4.12.2-rc1.gz
or in the git tree and branch at:
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git linux-4.12.y
and the diffstat can be found below.
thanks,
greg k-h
-------------
Pseudo-Shortlog of commits:
Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Linux 4.12.2-rc1
Mikulas Patocka <mpatocka@redhat.com>
x86/mm/pat: Don't report PAT on CPUs that don't support it
Chao Yu <yuchao0@huawei.com>
ext4: check return value of kstrtoull correctly in reserved_clusters_store
Jason A. Donenfeld <Jason@zx2c4.com>
crypto: rsa-pkcs1pad - use constant time memory comparison for MACs
Horia Geantă <horia.geanta@nxp.com>
crypto: caam - fix gfp allocation flags (part I)
Ian Abbott <abbotti@mev.co.uk>
staging: comedi: fix clean-up of comedi_class in comedi_init()
Malcolm Priestley <tvboxspy@gmail.com>
staging: vt6556: vnt_start Fix missing call to vnt_key_init_table.
Kirill Tkhai <ktkhai@virtuozzo.com>
locking/rwsem-spinlock: Fix EINTR branch in __down_write_common()
Eric W. Biederman <ebiederm@xmission.com>
proc: Fix proc_sys_prune_dcache to hold a sb reference
Peter Senna Tschudin <peter.senna@collabora.com>
imx-serial: RX DMA startup latency
Cong Wang <xiyou.wangcong@gmail.com>
mqueue: fix a use-after-free in sys_mq_notify()
-------------
Diffstat:
Makefile | 4 ++--
arch/x86/include/asm/pat.h | 1 +
arch/x86/kernel/setup.c | 7 ++++++
arch/x86/mm/pat.c | 28 ++++++++++-------------
crypto/rsa-pkcs1pad.c | 2 +-
drivers/crypto/caam/caamalg.c | 3 +--
drivers/staging/comedi/comedi_fops.c | 1 +
drivers/staging/vt6656/main_usb.c | 3 +++
drivers/tty/serial/imx.c | 26 +++++-----------------
fs/ext4/sysfs.c | 2 +-
fs/proc/internal.h | 2 +-
fs/proc/proc_sysctl.c | 43 +++++++++++++++++++++++++-----------
include/linux/sysctl.h | 2 +-
ipc/mqueue.c | 4 +++-
kernel/locking/rwsem-spinlock.c | 4 ++--
15 files changed, 71 insertions(+), 61 deletions(-)
[toc] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-13 18:10 +0200 |
| Subject | [PATCH 4.12 03/10] proc: Fix proc_sys_prune_dcache to hold a sb reference |
| Message-ID | <u2OQG-7O6-45@gated-at.bofh.it> |
| In reply to | #1686736 |
4.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Eric W. Biederman <ebiederm@xmission.com>
commit 2fd1d2c4ceb2248a727696962cf3370dc9f5a0a4 upstream.
Andrei Vagin writes:
FYI: This bug has been reproduced on 4.11.7
> BUG: Dentry ffff895a3dd01240{i=4e7c09a,n=lo} still in use (1) [unmount of proc proc]
> ------------[ cut here ]------------
> WARNING: CPU: 1 PID: 13588 at fs/dcache.c:1445 umount_check+0x6e/0x80
> CPU: 1 PID: 13588 Comm: kworker/1:1 Not tainted 4.11.7-200.fc25.x86_64 #1
> Hardware name: CompuLab sbc-flt1/fitlet, BIOS SBCFLT_0.08.04 06/27/2015
> Workqueue: events proc_cleanup_work
> Call Trace:
> dump_stack+0x63/0x86
> __warn+0xcb/0xf0
> warn_slowpath_null+0x1d/0x20
> umount_check+0x6e/0x80
> d_walk+0xc6/0x270
> ? dentry_free+0x80/0x80
> do_one_tree+0x26/0x40
> shrink_dcache_for_umount+0x2d/0x90
> generic_shutdown_super+0x1f/0xf0
> kill_anon_super+0x12/0x20
> proc_kill_sb+0x40/0x50
> deactivate_locked_super+0x43/0x70
> deactivate_super+0x5a/0x60
> cleanup_mnt+0x3f/0x90
> mntput_no_expire+0x13b/0x190
> kern_unmount+0x3e/0x50
> pid_ns_release_proc+0x15/0x20
> proc_cleanup_work+0x15/0x20
> process_one_work+0x197/0x450
> worker_thread+0x4e/0x4a0
> kthread+0x109/0x140
> ? process_one_work+0x450/0x450
> ? kthread_park+0x90/0x90
> ret_from_fork+0x2c/0x40
> ---[ end trace e1c109611e5d0b41 ]---
> VFS: Busy inodes after unmount of proc. Self-destruct in 5 seconds. Have a nice day...
> BUG: unable to handle kernel NULL pointer dereference at (null)
> IP: _raw_spin_lock+0xc/0x30
> PGD 0
Fix this by taking a reference to the super block in proc_sys_prune_dcache.
The superblock reference is the core of the fix however the sysctl_inodes
list is converted to a hlist so that hlist_del_init_rcu may be used. This
allows proc_sys_prune_dache to remove inodes the sysctl_inodes list, while
not causing problems for proc_sys_evict_inode when if it later choses to
remove the inode from the sysctl_inodes list. Removing inodes from the
sysctl_inodes list allows proc_sys_prune_dcache to have a progress
guarantee, while still being able to drop all locks. The fact that
head->unregistering is set in start_unregistering ensures that no more
inodes will be added to the the sysctl_inodes list.
Previously the code did a dance where it delayed calling iput until the
next entry in the list was being considered to ensure the inode remained on
the sysctl_inodes list until the next entry was walked to. The structure
of the loop in this patch does not need that so is much easier to
understand and maintain.
Reported-by: Andrei Vagin <avagin@gmail.com>
Tested-by: Andrei Vagin <avagin@openvz.org>
Fixes: ace0c791e6c3 ("proc/sysctl: Don't grab i_lock under sysctl_lock.")
Fixes: d6cffbbe9a7e ("proc/sysctl: prune stale dentries during unregistering")
Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
fs/proc/internal.h | 2 +-
fs/proc/proc_sysctl.c | 43 ++++++++++++++++++++++++++++++-------------
include/linux/sysctl.h | 2 +-
3 files changed, 32 insertions(+), 15 deletions(-)
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -67,7 +67,7 @@ struct proc_inode {
struct proc_dir_entry *pde;
struct ctl_table_header *sysctl;
struct ctl_table *sysctl_entry;
- struct list_head sysctl_inodes;
+ struct hlist_node sysctl_inodes;
const struct proc_ns_operations *ns_ops;
struct inode vfs_inode;
};
--- a/fs/proc/proc_sysctl.c
+++ b/fs/proc/proc_sysctl.c
@@ -191,7 +191,7 @@ static void init_header(struct ctl_table
head->set = set;
head->parent = NULL;
head->node = node;
- INIT_LIST_HEAD(&head->inodes);
+ INIT_HLIST_HEAD(&head->inodes);
if (node) {
struct ctl_table *entry;
for (entry = table; entry->procname; entry++, node++)
@@ -261,25 +261,42 @@ static void unuse_table(struct ctl_table
complete(p->unregistering);
}
-/* called under sysctl_lock */
static void proc_sys_prune_dcache(struct ctl_table_header *head)
{
- struct inode *inode, *prev = NULL;
+ struct inode *inode;
struct proc_inode *ei;
+ struct hlist_node *node;
+ struct super_block *sb;
rcu_read_lock();
- list_for_each_entry_rcu(ei, &head->inodes, sysctl_inodes) {
- inode = igrab(&ei->vfs_inode);
- if (inode) {
- rcu_read_unlock();
- iput(prev);
- prev = inode;
- d_prune_aliases(inode);
+ for (;;) {
+ node = hlist_first_rcu(&head->inodes);
+ if (!node)
+ break;
+ ei = hlist_entry(node, struct proc_inode, sysctl_inodes);
+ spin_lock(&sysctl_lock);
+ hlist_del_init_rcu(&ei->sysctl_inodes);
+ spin_unlock(&sysctl_lock);
+
+ inode = &ei->vfs_inode;
+ sb = inode->i_sb;
+ if (!atomic_inc_not_zero(&sb->s_active))
+ continue;
+ inode = igrab(inode);
+ rcu_read_unlock();
+ if (unlikely(!inode)) {
+ deactivate_super(sb);
rcu_read_lock();
+ continue;
}
+
+ d_prune_aliases(inode);
+ iput(inode);
+ deactivate_super(sb);
+
+ rcu_read_lock();
}
rcu_read_unlock();
- iput(prev);
}
/* called under sysctl_lock, will reacquire if has to wait */
@@ -461,7 +478,7 @@ static struct inode *proc_sys_make_inode
}
ei->sysctl = head;
ei->sysctl_entry = table;
- list_add_rcu(&ei->sysctl_inodes, &head->inodes);
+ hlist_add_head_rcu(&ei->sysctl_inodes, &head->inodes);
head->count++;
spin_unlock(&sysctl_lock);
@@ -489,7 +506,7 @@ out:
void proc_sys_evict_inode(struct inode *inode, struct ctl_table_header *head)
{
spin_lock(&sysctl_lock);
- list_del_rcu(&PROC_I(inode)->sysctl_inodes);
+ hlist_del_init_rcu(&PROC_I(inode)->sysctl_inodes);
if (!--head->count)
kfree_rcu(head, rcu);
spin_unlock(&sysctl_lock);
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -143,7 +143,7 @@ struct ctl_table_header
struct ctl_table_set *set;
struct ctl_dir *parent;
struct ctl_node *node;
- struct list_head inodes; /* head for proc_inode->sysctl_inodes */
+ struct hlist_head inodes; /* head for proc_inode->sysctl_inodes */
};
struct ctl_dir {
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-13 18:10 +0200 |
| Subject | [PATCH 4.12 02/10] imx-serial: RX DMA startup latency |
| Message-ID | <u2OQH-7O6-53@gated-at.bofh.it> |
| In reply to | #1686736 |
4.12-stable review patch. If anyone has any objections, please let me know.
------------------
From: Peter Senna Tschudin <peter.senna@collabora.com>
commit 4dec2f119e86f9c91e60cdd8f0cc057452e331a9 upstream.
18a4208 introduced a change to reduce the RX DMA latency on the first reception
when the serial port was opened for reading. However it was claiming a hardirq
unsafe lock after a hardirq safe lock which is not allowed and causes lockdep
to complain verbosely.
This patch changes the code to always start RX DMA earlier, instead of
relying on the flags used to open the serial port removing the code that
was looking for the serial file flags.
Signed-off-by: Peter Senna Tschudin <peter.senna@collabora.com>
Tested-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Fabio Estevam <festevam@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/tty/serial/imx.c | 26 +++++---------------------
1 file changed, 5 insertions(+), 21 deletions(-)
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -1340,29 +1340,13 @@ static int imx_startup(struct uart_port
imx_enable_ms(&sport->port);
/*
- * If the serial port is opened for reading start RX DMA immediately
- * instead of waiting for RX FIFO interrupts. In our iMX53 the average
- * delay for the first reception dropped from approximately 35000
- * microseconds to 1000 microseconds.
+ * Start RX DMA immediately instead of waiting for RX FIFO interrupts.
+ * In our iMX53 the average delay for the first reception dropped from
+ * approximately 35000 microseconds to 1000 microseconds.
*/
if (sport->dma_is_enabled) {
- struct tty_struct *tty = sport->port.state->port.tty;
- struct tty_file_private *file_priv;
- int readcnt = 0;
-
- spin_lock(&tty->files_lock);
-
- if (!list_empty(&tty->tty_files))
- list_for_each_entry(file_priv, &tty->tty_files, list)
- if (!(file_priv->file->f_flags & O_WRONLY))
- readcnt++;
-
- spin_unlock(&tty->files_lock);
-
- if (readcnt > 0) {
- imx_disable_rx_int(sport);
- start_rx_dma(sport);
- }
+ imx_disable_rx_int(sport);
+ start_rx_dma(sport);
}
spin_unlock_irqrestore(&sport->port.lock, flags);
[toc] | [prev] | [next] | [standalone]
| From | Guenter Roeck <linux@roeck-us.net> |
|---|---|
| Date | 2017-07-14 04:10 +0200 |
| Message-ID | <u2Ydj-5eG-3@gated-at.bofh.it> |
| In reply to | #1686736 |
On 07/13/2017 08:40 AM, Greg Kroah-Hartman wrote: > This is the start of the stable review cycle for the 4.12.2 release. > There are 10 patches in this series, all will be posted as a response > to this one. If anyone has any issues with these being applied, please > let me know. > > Responses should be made by Sat Jul 15 15:40:02 UTC 2017. > Anything received after that time might be too late. > Build results: total: 145 pass: 145 fail: 0 Qemu test results: total: 122 pass: 122 fail: 0 Details are available at http://kerneltests.org/builders. Guenter
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-14 12:00 +0200 |
| Message-ID | <u35ya-1D9-11@gated-at.bofh.it> |
| In reply to | #1687028 |
On Thu, Jul 13, 2017 at 07:08:54PM -0700, Guenter Roeck wrote: > On 07/13/2017 08:40 AM, Greg Kroah-Hartman wrote: > > This is the start of the stable review cycle for the 4.12.2 release. > > There are 10 patches in this series, all will be posted as a response > > to this one. If anyone has any issues with these being applied, please > > let me know. > > > > Responses should be made by Sat Jul 15 15:40:02 UTC 2017. > > Anything received after that time might be too late. > > > > Build results: > total: 145 pass: 145 fail: 0 > Qemu test results: > total: 122 pass: 122 fail: 0 > > Details are available at http://kerneltests.org/builders. Thanks for testing all of these and letting me know. greg k-h
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-14 12:00 +0200 |
| Message-ID | <u35yb-1D9-27@gated-at.bofh.it> |
| In reply to | #1686736 |
On Thu, Jul 13, 2017 at 03:07:46PM -0700, kernelci.org bot wrote: > stable-rc/linux-4.12.y boot: 226 boots: 5 failed, 216 passed with 4 offline, 1 conflict (v4.12.1-11-g28917cd49df9) Should I be concerned about these 5 failures? No other test systems shows any problems... thanks, greg k-h
[toc] | [prev] | [next] | [standalone]
| From | Mark Brown <broonie@kernel.org> |
|---|---|
| Date | 2017-07-14 13:20 +0200 |
| Message-ID | <u36NA-2CT-15@gated-at.bofh.it> |
| In reply to | #1686736 |
[Multipart message — attachments visible in raw view] — view raw
On Thu, Jul 13, 2017 at 03:07:46PM -0700, kernelci.org bot wrote:
>
> multi_v7_defconfig
> imx6ul-pico-hobbit_rootfs:nfs: 1 failed lab
>
> mvebu_v5_defconfig
> kirkwood-openblocks_a7_rootfs:nfs: 1 failed lab
>
> multi_v7_defconfig+CONFIG_PROVE_LOCKING=y
> omap4-panda: 1 failed lab
These look at first glance labs were having a bad day.
> sun5i-r8-chip: 1 failed lab
This one isn't immediately obvious to me, the kernel got to the end of
boot then nothing from userspace:
https://storage.kernelci.org/stable-rc/linux-4.12.y/v4.12.1-11-g28917cd49df9/arm/multi_v7_defconfig+CONFIG_PROVE_LOCKING=y/lab-free-electrons/boot-sun5i-r8-chip.html
> multi_v7_defconfig+CONFIG_SMP=n
> sun5i-r8-chip: 1 failed lab
Same board, same symptoms. It's not booting in -next either in a
similar way so I'd not worry about it for now.
[toc] | [prev] | [next] | [standalone]
| From | Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
|---|---|
| Date | 2017-07-14 13:50 +0200 |
| Message-ID | <u37gB-2NV-7@gated-at.bofh.it> |
| In reply to | #1687266 |
On Fri, Jul 14, 2017 at 12:17:03PM +0100, Mark Brown wrote: > On Thu, Jul 13, 2017 at 03:07:46PM -0700, kernelci.org bot wrote: > > > > > multi_v7_defconfig > > imx6ul-pico-hobbit_rootfs:nfs: 1 failed lab > > > > mvebu_v5_defconfig > > kirkwood-openblocks_a7_rootfs:nfs: 1 failed lab > > > > multi_v7_defconfig+CONFIG_PROVE_LOCKING=y > > omap4-panda: 1 failed lab > > These look at first glance labs were having a bad day. > > > sun5i-r8-chip: 1 failed lab > > This one isn't immediately obvious to me, the kernel got to the end of > boot then nothing from userspace: > > https://storage.kernelci.org/stable-rc/linux-4.12.y/v4.12.1-11-g28917cd49df9/arm/multi_v7_defconfig+CONFIG_PROVE_LOCKING=y/lab-free-electrons/boot-sun5i-r8-chip.html > > > multi_v7_defconfig+CONFIG_SMP=n > > sun5i-r8-chip: 1 failed lab > > Same board, same symptoms. It's not booting in -next either in a > similar way so I'd not worry about it for now. Ok, thanks for looking into these. greg k-h
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web