From 52a6bdb7741f6dd11cb9360f42b213bf92cde3fc Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Thu, 23 Apr 2015 14:12:57 +0200 Subject: [PATCH 1/2] Revert "lib: Make iscsi_realloc() update the freed pointer list" iscsi_realloc MUST NOT be called with a pointer that is in the freelist of small allocations. First they are free and secondly a realloc will change the size of the small allocation to an unknown size. This reverts commit d8de6531f840da742f32e8355ee7af4e6dec0b5a. --- lib/init.c | 9 --------- 1 file changed, 9 deletions(-) diff --git a/lib/init.c b/lib/init.c index ea9c5f5..54dd1b1 100644 --- a/lib/init.c +++ b/lib/init.c @@ -60,19 +60,10 @@ void* iscsi_zmalloc(struct iscsi_context *iscsi, size_t size) { } void* iscsi_realloc(struct iscsi_context *iscsi, void* ptr, size_t size) { - int i; void * _ptr = realloc(ptr, size); if (_ptr != NULL) { iscsi->reallocs++; } - if (ptr != NULL) { - for (i = 0; i < iscsi->smalloc_free; i++) { - if (iscsi->smalloc_ptrs[i] == ptr) { - iscsi->smalloc_ptrs[i] = _ptr; - break; - } - } - } return _ptr; } From cd0f4a30d6aeae0f883f412522fa027cdbd41540 Mon Sep 17 00:00:00 2001 From: Peter Lieven Date: Thu, 23 Apr 2015 14:16:17 +0200 Subject: [PATCH 2/2] connect: fir off by one error in iscsi->reconnect_max_retries Before b152d26 it was possible to set iscsi->reconnect_max_retries to 0. This allowed reconnects, but aborted as soon as the reconnect failed. The same behaviour is currenltly only possible by setting iscsi->reconnect_max_retries to 1. iscsi->reconnect_max_retries == 0 forbids reconnecting completly. Signed-off-by: Peter Lieven --- lib/connect.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/connect.c b/lib/connect.c index a4354d1..dec2a4b 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -263,7 +263,7 @@ void iscsi_reconnect_cb(struct iscsi_context *iscsi _U_, int status, backoff = 30; } if (iscsi->reconnect_max_retries != -1 && - iscsi->old_iscsi->retry_cnt >= iscsi->reconnect_max_retries) { + iscsi->old_iscsi->retry_cnt > iscsi->reconnect_max_retries) { /* we will exit iscsi_service with -1 the next time we enter it. */ backoff = 0; } @@ -375,7 +375,7 @@ int iscsi_reconnect(struct iscsi_context *old_iscsi) } if (old_iscsi->reconnect_max_retries != -1 && old_iscsi->old_iscsi && - old_iscsi->old_iscsi->retry_cnt >= old_iscsi->reconnect_max_retries) { + old_iscsi->old_iscsi->retry_cnt > old_iscsi->reconnect_max_retries) { iscsi_defer_reconnect(old_iscsi); return -1; }