| From 47f1b8803e1e358ebbf4f82bfdb98971c912a2c3 Mon Sep 17 00:00:00 2001 |
| From: =?UTF-8?q?J=C3=B6rn=20Engel?= <joern@logfs.org> |
| Date: Wed, 15 Feb 2012 16:52:11 -0500 |
| Subject: target: prevent NULL pointer dereference in target_report_luns |
| |
| From: =?UTF-8?q?J=C3=B6rn=20Engel?= <joern@logfs.org> |
| |
| commit 47f1b8803e1e358ebbf4f82bfdb98971c912a2c3 upstream. |
| |
| transport_kmap_data_sg can return NULL. I never saw this trigger, but |
| returning -ENOMEM seems better than a crash. Also removes a pointless |
| case while at it. |
| |
| Signed-off-by: Joern Engel <joern@logfs.org> |
| Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/target/target_core_device.c | 4 +++- |
| 1 file changed, 3 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/target/target_core_device.c |
| +++ b/drivers/target/target_core_device.c |
| @@ -658,7 +658,9 @@ int target_report_luns(struct se_task *s |
| unsigned char *buf; |
| u32 cdb_offset = 0, lun_count = 0, offset = 8, i; |
| |
| - buf = (unsigned char *) transport_kmap_data_sg(se_cmd); |
| + buf = transport_kmap_data_sg(se_cmd); |
| + if (!buf) |
| + return -ENOMEM; |
| |
| /* |
| * If no struct se_session pointer is present, this struct se_cmd is |