linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Lucas Stach <l.stach@pengutronix.de>,
	Ilya Dryomov <idryomov@gmail.com>, Sage Weil <sage@redhat.com>
Subject: [PATCH 4.9 130/130] libceph: stop allocating a new cipher on every crypto request
Date: Tue, 24 Jan 2017 08:56:10 +0100	[thread overview]
Message-ID: <20170124075540.254618232@linuxfoundation.org> (raw)
In-Reply-To: <20170124075534.905042535@linuxfoundation.org>

4.9-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Ilya Dryomov <idryomov@gmail.com>

commit 7af3ea189a9a13f090de51c97f676215dabc1205 upstream.

This is useless and more importantly not allowed on the writeback path,
because crypto_alloc_skcipher() allocates memory with GFP_KERNEL, which
can recurse back into the filesystem:

    kworker/9:3     D ffff92303f318180     0 20732      2 0x00000080
    Workqueue: ceph-msgr ceph_con_workfn [libceph]
     ffff923035dd4480 ffff923038f8a0c0 0000000000000001 000000009eb27318
     ffff92269eb28000 ffff92269eb27338 ffff923036b145ac ffff923035dd4480
     00000000ffffffff ffff923036b145b0 ffffffff951eb4e1 ffff923036b145a8
    Call Trace:
     [<ffffffff951eb4e1>] ? schedule+0x31/0x80
     [<ffffffff951eb77a>] ? schedule_preempt_disabled+0xa/0x10
     [<ffffffff951ed1f4>] ? __mutex_lock_slowpath+0xb4/0x130
     [<ffffffff951ed28b>] ? mutex_lock+0x1b/0x30
     [<ffffffffc0a974b3>] ? xfs_reclaim_inodes_ag+0x233/0x2d0 [xfs]
     [<ffffffff94d92ba5>] ? move_active_pages_to_lru+0x125/0x270
     [<ffffffff94f2b985>] ? radix_tree_gang_lookup_tag+0xc5/0x1c0
     [<ffffffff94dad0f3>] ? __list_lru_walk_one.isra.3+0x33/0x120
     [<ffffffffc0a98331>] ? xfs_reclaim_inodes_nr+0x31/0x40 [xfs]
     [<ffffffff94e05bfe>] ? super_cache_scan+0x17e/0x190
     [<ffffffff94d919f3>] ? shrink_slab.part.38+0x1e3/0x3d0
     [<ffffffff94d9616a>] ? shrink_node+0x10a/0x320
     [<ffffffff94d96474>] ? do_try_to_free_pages+0xf4/0x350
     [<ffffffff94d967ba>] ? try_to_free_pages+0xea/0x1b0
     [<ffffffff94d863bd>] ? __alloc_pages_nodemask+0x61d/0xe60
     [<ffffffff94ddf42d>] ? cache_grow_begin+0x9d/0x560
     [<ffffffff94ddfb88>] ? fallback_alloc+0x148/0x1c0
     [<ffffffff94ed84e7>] ? __crypto_alloc_tfm+0x37/0x130
     [<ffffffff94de09db>] ? __kmalloc+0x1eb/0x580
     [<ffffffffc09fe2db>] ? crush_choose_firstn+0x3eb/0x470 [libceph]
     [<ffffffff94ed84e7>] ? __crypto_alloc_tfm+0x37/0x130
     [<ffffffff94ed9c19>] ? crypto_spawn_tfm+0x39/0x60
     [<ffffffffc08b30a3>] ? crypto_cbc_init_tfm+0x23/0x40 [cbc]
     [<ffffffff94ed857c>] ? __crypto_alloc_tfm+0xcc/0x130
     [<ffffffff94edcc23>] ? crypto_skcipher_init_tfm+0x113/0x180
     [<ffffffff94ed7cc3>] ? crypto_create_tfm+0x43/0xb0
     [<ffffffff94ed83b0>] ? crypto_larval_lookup+0x150/0x150
     [<ffffffff94ed7da2>] ? crypto_alloc_tfm+0x72/0x120
     [<ffffffffc0a01dd7>] ? ceph_aes_encrypt2+0x67/0x400 [libceph]
     [<ffffffffc09fd264>] ? ceph_pg_to_up_acting_osds+0x84/0x5b0 [libceph]
     [<ffffffff950d40a0>] ? release_sock+0x40/0x90
     [<ffffffff95139f94>] ? tcp_recvmsg+0x4b4/0xae0
     [<ffffffffc0a02714>] ? ceph_encrypt2+0x54/0xc0 [libceph]
     [<ffffffffc0a02b4d>] ? ceph_x_encrypt+0x5d/0x90 [libceph]
     [<ffffffffc0a02bdf>] ? calcu_signature+0x5f/0x90 [libceph]
     [<ffffffffc0a02ef5>] ? ceph_x_sign_message+0x35/0x50 [libceph]
     [<ffffffffc09e948c>] ? prepare_write_message_footer+0x5c/0xa0 [libceph]
     [<ffffffffc09ecd18>] ? ceph_con_workfn+0x2258/0x2dd0 [libceph]
     [<ffffffffc09e9903>] ? queue_con_delay+0x33/0xd0 [libceph]
     [<ffffffffc09f68ed>] ? __submit_request+0x20d/0x2f0 [libceph]
     [<ffffffffc09f6ef8>] ? ceph_osdc_start_request+0x28/0x30 [libceph]
     [<ffffffffc0b52603>] ? rbd_queue_workfn+0x2f3/0x350 [rbd]
     [<ffffffff94c94ec0>] ? process_one_work+0x160/0x410
     [<ffffffff94c951bd>] ? worker_thread+0x4d/0x480
     [<ffffffff94c95170>] ? process_one_work+0x410/0x410
     [<ffffffff94c9af8d>] ? kthread+0xcd/0xf0
     [<ffffffff951efb2f>] ? ret_from_fork+0x1f/0x40
     [<ffffffff94c9aec0>] ? kthread_create_on_node+0x190/0x190

Allocating the cipher along with the key fixes the issue - as long the
key doesn't change, a single cipher context can be used concurrently in
multiple requests.

We still can't take that GFP_KERNEL allocation though.  Both
ceph_crypto_key_clone() and ceph_crypto_key_decode() are called from
GFP_NOFS context, so resort to memalloc_noio_{save,restore}() here.

Reported-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
Reviewed-by: Sage Weil <sage@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 net/ceph/crypto.c |   85 ++++++++++++++++++++++++++++++++++++++----------------
 net/ceph/crypto.h |    1 
 2 files changed, 61 insertions(+), 25 deletions(-)

--- a/net/ceph/crypto.c
+++ b/net/ceph/crypto.c
@@ -13,14 +13,60 @@
 #include <linux/ceph/decode.h>
 #include "crypto.h"
 
+/*
+ * Set ->key and ->tfm.  The rest of the key should be filled in before
+ * this function is called.
+ */
+static int set_secret(struct ceph_crypto_key *key, void *buf)
+{
+	unsigned int noio_flag;
+	int ret;
+
+	key->key = NULL;
+	key->tfm = NULL;
+
+	switch (key->type) {
+	case CEPH_CRYPTO_NONE:
+		return 0; /* nothing to do */
+	case CEPH_CRYPTO_AES:
+		break;
+	default:
+		return -ENOTSUPP;
+	}
+
+	WARN_ON(!key->len);
+	key->key = kmemdup(buf, key->len, GFP_NOIO);
+	if (!key->key) {
+		ret = -ENOMEM;
+		goto fail;
+	}
+
+	/* crypto_alloc_skcipher() allocates with GFP_KERNEL */
+	noio_flag = memalloc_noio_save();
+	key->tfm = crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC);
+	memalloc_noio_restore(noio_flag);
+	if (IS_ERR(key->tfm)) {
+		ret = PTR_ERR(key->tfm);
+		key->tfm = NULL;
+		goto fail;
+	}
+
+	ret = crypto_skcipher_setkey(key->tfm, key->key, key->len);
+	if (ret)
+		goto fail;
+
+	return 0;
+
+fail:
+	ceph_crypto_key_destroy(key);
+	return ret;
+}
+
 int ceph_crypto_key_clone(struct ceph_crypto_key *dst,
 			  const struct ceph_crypto_key *src)
 {
 	memcpy(dst, src, sizeof(struct ceph_crypto_key));
-	dst->key = kmemdup(src->key, src->len, GFP_NOFS);
-	if (!dst->key)
-		return -ENOMEM;
-	return 0;
+	return set_secret(dst, src->key);
 }
 
 int ceph_crypto_key_encode(struct ceph_crypto_key *key, void **p, void *end)
@@ -37,16 +83,16 @@ int ceph_crypto_key_encode(struct ceph_c
 
 int ceph_crypto_key_decode(struct ceph_crypto_key *key, void **p, void *end)
 {
+	int ret;
+
 	ceph_decode_need(p, end, 2*sizeof(u16) + sizeof(key->created), bad);
 	key->type = ceph_decode_16(p);
 	ceph_decode_copy(p, &key->created, sizeof(key->created));
 	key->len = ceph_decode_16(p);
 	ceph_decode_need(p, end, key->len, bad);
-	key->key = kmalloc(key->len, GFP_NOFS);
-	if (!key->key)
-		return -ENOMEM;
-	ceph_decode_copy(p, key->key, key->len);
-	return 0;
+	ret = set_secret(key, *p);
+	*p += key->len;
+	return ret;
 
 bad:
 	dout("failed to decode crypto key\n");
@@ -85,14 +131,11 @@ void ceph_crypto_key_destroy(struct ceph
 	if (key) {
 		kfree(key->key);
 		key->key = NULL;
+		crypto_free_skcipher(key->tfm);
+		key->tfm = NULL;
 	}
 }
 
-static struct crypto_skcipher *ceph_crypto_alloc_cipher(void)
-{
-	return crypto_alloc_skcipher("cbc(aes)", 0, CRYPTO_ALG_ASYNC);
-}
-
 static const u8 *aes_iv = (u8 *)CEPH_AES_IV;
 
 /*
@@ -168,8 +211,7 @@ static void teardown_sgtable(struct sg_t
 static int ceph_aes_crypt(const struct ceph_crypto_key *key, bool encrypt,
 			  void *buf, int buf_len, int in_len, int *pout_len)
 {
-	struct crypto_skcipher *tfm = ceph_crypto_alloc_cipher();
-	SKCIPHER_REQUEST_ON_STACK(req, tfm);
+	SKCIPHER_REQUEST_ON_STACK(req, key->tfm);
 	struct sg_table sgt;
 	struct scatterlist prealloc_sg;
 	char iv[AES_BLOCK_SIZE] __aligned(8);
@@ -177,20 +219,15 @@ static int ceph_aes_crypt(const struct c
 	int crypt_len = encrypt ? in_len + pad_byte : in_len;
 	int ret;
 
-	if (IS_ERR(tfm))
-		return PTR_ERR(tfm);
-
 	WARN_ON(crypt_len > buf_len);
 	if (encrypt)
 		memset(buf + in_len, pad_byte, pad_byte);
 	ret = setup_sgtable(&sgt, &prealloc_sg, buf, crypt_len);
 	if (ret)
-		goto out_tfm;
+		return ret;
 
-	crypto_skcipher_setkey((void *)tfm, key->key, key->len);
 	memcpy(iv, aes_iv, AES_BLOCK_SIZE);
-
-	skcipher_request_set_tfm(req, tfm);
+	skcipher_request_set_tfm(req, key->tfm);
 	skcipher_request_set_callback(req, 0, NULL, NULL);
 	skcipher_request_set_crypt(req, sgt.sgl, sgt.sgl, crypt_len, iv);
 
@@ -232,8 +269,6 @@ static int ceph_aes_crypt(const struct c
 
 out_sgt:
 	teardown_sgtable(&sgt);
-out_tfm:
-	crypto_free_skcipher(tfm);
 	return ret;
 }
 
--- a/net/ceph/crypto.h
+++ b/net/ceph/crypto.h
@@ -12,6 +12,7 @@ struct ceph_crypto_key {
 	struct ceph_timespec created;
 	int len;
 	void *key;
+	struct crypto_skcipher *tfm;
 };
 
 int ceph_crypto_key_clone(struct ceph_crypto_key *dst,

  parent reply	other threads:[~2017-01-24  8:05 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20170124080037epcas2p270f8226e76503a60d8fcf6925a8c918b@epcas2p2.samsung.com>
2017-01-24  7:54 ` [PATCH 4.9 000/130] 4.9.6-stable review Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 001/130] IB/core: Release allocated memory in cache setup failure Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 002/130] IB/rxe: Increase max number of completions to 32k Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 003/130] IB/rxe: avoid putting a large struct rxe_qp on stack Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 004/130] IB/mlx5: Avoid system crash when enabling many VFs Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 005/130] IB/mlx5: Fix reported max SGE calculation Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 006/130] IB/mlx5: Assign SRQ type earlier Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 007/130] IB/mlx5: Wait for all async command completions to complete Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 008/130] IB/mlx4: Set traffic class in AH Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 009/130] IB/mlx4: Fix out-of-range array index in destroy qp flow Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 010/130] IB/mlx4: Handle well-known-gid in mad_demux processing Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 011/130] IB/mlx4: Fix port query for 56Gb Ethernet links Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 012/130] IB/mlx4: When no DMFS for IPoIB, dont allow NET_IF QPs Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 013/130] IB/mlx4: Check if GRH is available before using it Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 014/130] IB/IPoIB: Remove cant use GFP_NOIO warning Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 015/130] perf trace: Use the syscall raw_syscalls:sys_enter timestamp Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 016/130] perf mem: Fix --all-user/--all-kernel options Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 017/130] perf trace: Check if MAP_32BIT is defined (again) Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 018/130] perf diff: Do not overwrite valid build id Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 019/130] perf callchain: Fixup help/config for no-unwinding Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 020/130] perf scripting: Avoid leaking the scripting_context variable Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 021/130] perf jit: Enable jitdump support without dwarf Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 023/130] ARM: dts: r8a7794: Use SYSC "always-on" PM Domain for sound Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 024/130] ARM: dts: r8a7794: remove Z clock Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 025/130] ARM: dts: imx6q-cm-fx6: fix fec pinctrl Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 026/130] ARM: dts: imx31: fix clock control module interrupts description Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 028/130] ARM: dts: imx31: fix AVIC base address Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 029/130] ARM: dts: omap3: Add DTS for Logic PD SOM-LV 37xx Dev Kit Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 030/130] tmpfs: clear S_ISGID when setting posix ACLs Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 031/130] x86/PCI: Ignore _CRS on Supermicro X8DTH-i/6/iF/6F Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 032/130] rcu: Remove cond_resched() from Tiny synchronize_sched() Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 033/130] rcu: Narrow early boot window of illegal synchronous grace periods Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 034/130] sunrpc: dont call sleeping functions from the notifier block callbacks Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 035/130] svcrpc: dont leak contexts on PROC_DESTROY Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 036/130] libnvdimm, namespace: fix pmem namespace leak, delete when size set to zero Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 037/130] ARC: module: Fix !CONFIG_ARC_DW2_UNWIND builds Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 038/130] fuse: clear FR_PENDING flag when moving requests out of pending queue Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 039/130] fuse: fix time_to_jiffies nsec sanity check Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 040/130] PCI: designware: Check for iATU unroll only on platforms that use ATU Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 041/130] PCI: Enumerate switches below PCI-to-PCIe bridges Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 042/130] HID: corsair: fix DMA buffers on stack Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 043/130] HID: corsair: fix control-transfer error handling Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 044/130] mmc: sdhci-acpi: Only powered up enabled acpi child devices Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 045/130] mmc: mxs-mmc: Fix additional cycles after transmission stop Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 046/130] ieee802154: atusb: do not use the stack for buffers to make them DMA able Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 047/130] mtd: nand: lpc32xx: fix invalid error handling of a requested irq Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 048/130] mtd: nand: xway: disable module support Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 049/130] mtd: nand: xway: fix build because of module functions Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 050/130] KVM: s390: do not expose random data via facility bitmap Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 051/130] KVM: arm/arm64: vgic: Fix deadlock on error handling Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 052/130] powerpc/icp-opal: Fix missing KVM case and harden replay Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 053/130] powerpc/perf: Fix PM_BRU_CMPL event code for power9 Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 054/130] powerpc/ptrace: Preserve previous fprs/vsrs on short regset write Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 055/130] powerpc/ptrace: Preserve previous TM " Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 056/130] powerpc: Ignore reserved field in DCSR and PVR reads and writes Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 057/130] x86/ioapic: Restore IO-APIC irq_chip retrigger callback Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 058/130] qla2xxx: Fix crash due to null pointer access Greg Kroah-Hartman
2017-01-24  7:54   ` [PATCH 4.9 059/130] mac80211: implement multicast forwarding on fast-RX path Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 060/130] ubifs: Fix journal replay wrt. xattr nodes Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 061/130] clocksource/exynos_mct: Clear interrupt when cpu is shut down Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 062/130] svcrdma: avoid duplicate dma unmapping during error recovery Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 063/130] ARM: 8634/1: hw_breakpoint: blacklist Scorpion CPUs Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 064/130] ibmvscsis: Fix sleeping in interrupt context Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 065/130] ibmvscsis: Fix max transfer length Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 066/130] ceph: fix bad endianness handling in parse_reply_info_extra Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 067/130] ARM: dts: OMAP5 / DRA7: indicate that SATA port 0 is available Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 068/130] ARM: dts: da850-evm: fix read access to SPI flash Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 069/130] arm64: avoid returning from bad_mode Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 070/130] arm64/ptrace: Preserve previous registers for short regset write Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 071/130] arm64/ptrace: Preserve previous registers for short regset write - 2 Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 072/130] arm64/ptrace: Preserve previous registers for short regset write - 3 Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 073/130] arm64/ptrace: Avoid uninitialised struct padding in fpr_set() Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 074/130] arm64/ptrace: Reject attempts to set incomplete hardware breakpoint fields Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 076/130] libceph: ceph_x_encrypt_buflen() takes in_len Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 077/130] libceph: old_key in process_one_ticket() is redundant Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 078/130] libceph: introduce ceph_x_encrypt_offset() Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 079/130] libceph: introduce ceph_crypt() for in-place en/decryption Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 080/130] libceph: rename and align ceph_x_authorizer::reply_buf Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 081/130] libceph: tweak calcu_signature() a little Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 082/130] libceph: switch ceph_x_encrypt() to ceph_crypt() Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 083/130] libceph: switch ceph_x_decrypt() " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 084/130] libceph: remove now unused ceph_*{en,de}crypt*() functions Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 085/130] ARM: dts: dra7: Add an empty chosen node to top level DTSI Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 086/130] ARM: dts: dm816x: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 087/130] ARM: dts: dm814x: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 088/130] ARM: dts: am33xx: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 089/130] ARM: dts: omap4: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 090/130] ARM: dts: omap5: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 091/130] ARM: dts: am4372: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 092/130] ARM: dts: omap3: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 093/130] ARM: dts: omap2: " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 094/130] ARM: dts: imx6qdl-nitrogen6_max: fix sgtl5000 pinctrl init Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 095/130] ARM: dts: omap3: Fix Card Detect and Write Protect on Logic PD SOM-LV Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 096/130] ARM: ux500: fix prcmu_is_cpu_in_wfi() calculation Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 097/130] ARM: 8613/1: Fix the uaccess crash on PB11MPCore Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 098/130] ceph: fix scheduler warning due to nested blocking Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 099/130] ceph: fix ceph_get_caps() interruption Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 100/130] ceph: fix endianness of getattr mask in ceph_d_revalidate Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 101/130] ceph: fix endianness bug in frag_tree_split_cmp Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 102/130] libceph: make sure ceph_aes_crypt() IV is aligned Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 103/130] xprtrdma: Make FRWR send queue entry accounting more accurate Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 104/130] xprtrdma: Squelch "max send, max recv" messages at connect time Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 105/130] arm64: mm: avoid name clash in __page_to_voff() Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 106/130] arm64: Fix swiotlb fallback allocation Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 107/130] swiotlb: Convert swiotlb_force from int to enum Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 108/130] swiotlb: Add swiotlb=noforce debug option Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 109/130] scsi: ses: Fix SAS device detection in enclosure Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 110/130] scsi: mpt3sas: fix hang on ata passthrough commands Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 111/130] PM / devfreq: exynos-bus: Fix the wrong return value Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 112/130] PM / devfreq: Fix the bug of devfreq_add_device when governor is NULL Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 113/130] mtd: spi-nor: Off by one in cqspi_setup_flash() Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 114/130] mtd: spi-nor: Fix some error codes " Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 115/130] rpmsg: virtio_rpmsg_bus: fix channel creation Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 116/130] [media] blackfin: check devm_pinctrl_get() for errors Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 117/130] [media] platform: pxa_camera: add VIDEO_V4L2 dependency Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 118/130] [media] gs1662: drop kfree for memory allocated with devm_kzalloc Greg Kroah-Hartman
2017-01-24  7:55   ` [PATCH 4.9 119/130] [media] ite-cir: initialize use_demodulator before using it Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 120/130] [media] st-hva: fix some error handling in hva_hw_probe() Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 122/130] [media] s5p-mfc: Fix clock management in s5p_mfc_release() function Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 124/130] dmaengine: pl330: Fix runtime PM support for terminated transfers Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 125/130] spi: pxa2xx: add missed break Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 126/130] soc: ti: wkup_m3_ipc: Fix error return code in wkup_m3_ipc_probe() Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 127/130] selftest/powerpc: Wrong PMC initialized in pmc56_overflow test Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 128/130] tools/virtio/ringtest: fix run-on-all.sh for offline cpus Greg Kroah-Hartman
2017-01-24  7:56   ` [PATCH 4.9 129/130] libceph: uninline ceph_crypto_key_destroy() Greg Kroah-Hartman
2017-01-24  7:56   ` Greg Kroah-Hartman [this message]
2017-01-24 18:26   ` [PATCH 4.9 000/130] 4.9.6-stable review Shuah Khan
2017-01-25 11:02     ` Greg Kroah-Hartman
2017-01-24 19:07   ` Guenter Roeck
2017-01-25 11:02     ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170124075540.254618232@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=idryomov@gmail.com \
    --cc=l.stach@pengutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sage@redhat.com \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).