Merge tag 'v4.9.214' of git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux...
authorMauro (mdrjr) Ribeiro <mauro.ribeiro@hardkernel.com>
Wed, 8 Apr 2020 00:28:16 +0000 (21:28 -0300)
committerMauro (mdrjr) Ribeiro <mauro.ribeiro@hardkernel.com>
Wed, 8 Apr 2020 00:28:16 +0000 (21:28 -0300)
This is the 4.9.214 stable release

1  2 
Makefile
arch/x86/kvm/vmx.c
crypto/api.c
drivers/media/usb/uvc/uvc_driver.c
drivers/scsi/ufs/ufshcd.c
fs/ext4/page-io.c
kernel/events/core.c
lib/test_kasan.c
net/ipv4/tcp.c

diff --cc Makefile
Simple merge
Simple merge
diff --cc crypto/api.c
Simple merge
Simple merge
Simple merge
@@@ -468,17 -469,25 +468,26 @@@ int ext4_bio_write_page(struct ext4_io_
            nr_to_submit) {
                gfp_t gfp_flags = GFP_NOFS;
  
+               /*
+                * Since bounce page allocation uses a mempool, we can only use
+                * a waiting mask (i.e. request guaranteed allocation) on the
+                * first page of the bio.  Otherwise it can deadlock.
+                */
+               if (io->io_bio)
+                       gfp_flags = GFP_NOWAIT | __GFP_NOWARN;
        retry_encrypt:
 -              data_page = fscrypt_encrypt_page(inode, page, gfp_flags);
 +              data_page = fscrypt_encrypt_page(inode, page, PAGE_SIZE, 0,
 +                                              page->index, gfp_flags);
                if (IS_ERR(data_page)) {
                        ret = PTR_ERR(data_page);
-                       if (ret == -ENOMEM && wbc->sync_mode == WB_SYNC_ALL) {
-                               if (io->io_bio) {
+                       if (ret == -ENOMEM &&
+                           (io->io_bio || wbc->sync_mode == WB_SYNC_ALL)) {
+                               gfp_flags = GFP_NOFS;
+                               if (io->io_bio)
                                        ext4_io_submit(io);
-                                       congestion_wait(BLK_RW_ASYNC, HZ/50);
-                               }
-                               gfp_flags |= __GFP_NOFAIL;
+                               else
+                                       gfp_flags |= __GFP_NOFAIL;
+                               congestion_wait(BLK_RW_ASYNC, HZ/50);
                                goto retry_encrypt;
                        }
                        data_page = NULL;
Simple merge
Simple merge
diff --cc net/ipv4/tcp.c
@@@ -2345,13 -2314,13 +2347,17 @@@ int tcp_disconnect(struct sock *sk, in
        dst_release(sk->sk_rx_dst);
        sk->sk_rx_dst = NULL;
        tcp_saved_syn_free(tp);
+       tp->segs_in = 0;
+       tp->segs_out = 0;
        tp->bytes_acked = 0;
        tp->bytes_received = 0;
+       tp->data_segs_in = 0;
+       tp->data_segs_out = 0;
  
 +      /* Clean up fastopen related fields */
 +      tcp_free_fastopen_req(tp);
 +      inet->defer_connect = 0;
 +
        WARN_ON(inet->inet_num && !icsk->icsk_bind_hash);
  
        if (sk->sk_frag.page) {