pstore fixes for v5.2-rc4
- Avoid NULL deref when unloading/reloading ramoops module (Pi-Hsun Shih) - Run ramoops without crash dump region -----BEGIN PGP SIGNATURE----- Comment: Kees Cook <kees@outflux.net> iQJKBAABCgA0FiEEpcP2jyKd1g9yPm4TiXL039xtwCYFAlz3NB8WHGtlZXNjb29r QGNocm9taXVtLm9yZwAKCRCJcvTf3G3AJjGyEACklx2W3qjE51oCWpRuN9B29As0 XzuWrQr15WzD2zAtdG4wc6/OI3Gfu+/xXb9YClqXFN8TqGEwyGIcz0kOOExvzJN2 bdseq8gA4JkL8NK3LKjGMXCvUBQiCGUKfGa4xXL8I2NfyZkykUqRa0PVkkfNYOEf q6zjPz73BDRvpZUw7+50sKDJalcicwOzn3GMXw7C43qDuuychpwzLTL5ZmFrQ3oX qJqz7mIfsP5DpJk8SUTZl+W4eZ6/ianfML883ia9Zg8AP6ix/iET0iQHXw59DbOZ XeFmXBudou+JNAjqlDbGppBwJOu3iHXFKh7eJre2W2swkdah/V8CvYo36qdJ9zHP zs4/Wt/yloWYZqtY4UWsMhs47ryvm8iC2Ki//OPTZh30fIeqGAcVknbFbu1EHron autOEy8DiKH5I76BGGaR78We6AVt04HXTT0kFcDgczv3MLhfOpHLoL4w4fM0NvNq 3CSDEkr6dsTQPCPUoApBo3rfbiVROzgXdDLLLxULWphtL6rAvvn/FmAPQsC7OdN3 TdZQ0AjMtiQO32TFfm9badadDXW2QjXJF91TQBqtGacR+ipiXSnImeZC24VCdXyT pO9U/rbrU3tds3+Qu1WNh87IvEWOjzC/sjDKSd/ClZqk9F0KVGGSxc9YXgxNzLIR gC0luMlt7acj4Jzkog== =g26W -----END PGP SIGNATURE----- Merge tag 'pstore-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux Pull pstore fixes from Kees Cook: - Avoid NULL deref when unloading/reloading ramoops module (Pi-Hsun Shih) - Run ramoops without crash dump region * tag 'pstore-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: pstore/ram: Run without kernel crash dump region pstore: Set tfm to NULL on free_buf_for_compression
This commit is contained in:
		
						commit
						47358b6475
					
				| @ -347,8 +347,10 @@ static void allocate_buf_for_compression(void) | ||||
| 
 | ||||
| static void free_buf_for_compression(void) | ||||
| { | ||||
| 	if (IS_ENABLED(CONFIG_PSTORE_COMPRESS) && tfm) | ||||
| 	if (IS_ENABLED(CONFIG_PSTORE_COMPRESS) && tfm) { | ||||
| 		crypto_free_comp(tfm); | ||||
| 		tfm = NULL; | ||||
| 	} | ||||
| 	kfree(big_oops_buf); | ||||
| 	big_oops_buf = NULL; | ||||
| 	big_oops_buf_sz = 0; | ||||
| @ -606,7 +608,8 @@ int pstore_register(struct pstore_info *psi) | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	allocate_buf_for_compression(); | ||||
| 	if (psi->flags & PSTORE_FLAGS_DMESG) | ||||
| 		allocate_buf_for_compression(); | ||||
| 
 | ||||
| 	if (pstore_is_mounted()) | ||||
| 		pstore_get_records(0); | ||||
|  | ||||
| @ -799,27 +799,37 @@ static int ramoops_probe(struct platform_device *pdev) | ||||
| 		goto fail_init_mprz; | ||||
| 
 | ||||
| 	cxt->pstore.data = cxt; | ||||
| 	/*
 | ||||
| 	 * Prepare frontend flags based on which areas are initialized. | ||||
| 	 * For ramoops_init_przs() cases, the "max count" variable tells | ||||
| 	 * if there are regions present. For ramoops_init_prz() cases, | ||||
| 	 * the single region size is how to check. | ||||
| 	 */ | ||||
| 	cxt->pstore.flags = 0; | ||||
| 	if (cxt->max_dump_cnt) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_DMESG; | ||||
| 	if (cxt->console_size) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_CONSOLE; | ||||
| 	if (cxt->max_ftrace_cnt) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_FTRACE; | ||||
| 	if (cxt->pmsg_size) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_PMSG; | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * Since bufsize is only used for dmesg crash dumps, it | ||||
| 	 * must match the size of the dprz record (after PRZ header | ||||
| 	 * and ECC bytes have been accounted for). | ||||
| 	 */ | ||||
| 	cxt->pstore.bufsize = cxt->dprzs[0]->buffer_size; | ||||
| 	cxt->pstore.buf = kzalloc(cxt->pstore.bufsize, GFP_KERNEL); | ||||
| 	if (!cxt->pstore.buf) { | ||||
| 		pr_err("cannot allocate pstore crash dump buffer\n"); | ||||
| 		err = -ENOMEM; | ||||
| 		goto fail_clear; | ||||
| 	if (cxt->pstore.flags & PSTORE_FLAGS_DMESG) { | ||||
| 		cxt->pstore.bufsize = cxt->dprzs[0]->buffer_size; | ||||
| 		cxt->pstore.buf = kzalloc(cxt->pstore.bufsize, GFP_KERNEL); | ||||
| 		if (!cxt->pstore.buf) { | ||||
| 			pr_err("cannot allocate pstore crash dump buffer\n"); | ||||
| 			err = -ENOMEM; | ||||
| 			goto fail_clear; | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	cxt->pstore.flags = PSTORE_FLAGS_DMESG; | ||||
| 	if (cxt->console_size) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_CONSOLE; | ||||
| 	if (cxt->ftrace_size) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_FTRACE; | ||||
| 	if (cxt->pmsg_size) | ||||
| 		cxt->pstore.flags |= PSTORE_FLAGS_PMSG; | ||||
| 
 | ||||
| 	err = pstore_register(&cxt->pstore); | ||||
| 	if (err) { | ||||
| 		pr_err("registering with pstore failed\n"); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user