On 06/28/2011 06:44 AM, Mike Christie wrote:
On 06/21/2011 04:23 AM, Hannes Reinecke wrote:
When the startup mode has been specified in iscsid.conf it
needs to be kept in sync for both settings, 'node.startup'
and 'node.conn[0].startup'.

References: bnc#458142

Signed-off-by: Hannes Reinecke<[email protected]>
---
  usr/idbm.c |   25 ++++++++++++++++++++++++-
  1 files changed, 24 insertions(+), 1 deletions(-)

diff --git a/usr/idbm.c b/usr/idbm.c
index a73b410..1f01535 100644
--- a/usr/idbm.c
+++ b/usr/idbm.c
@@ -598,6 +598,8 @@ void idbm_recinfo_config(recinfo_t *info, FILE *f)
        char name[NAME_MAXVAL];
        char value[VALUE_MAXVAL];
        char *line, *nl, buffer[2048];
+       char *node_startup_value = NULL;
+       char *conn_startup_value = NULL;
        int line_number = 0;
        int c = 0, i;

@@ -656,8 +658,29 @@ void idbm_recinfo_config(recinfo_t *info, FILE *f)
                }
                *(value+i) = 0;

-               idbm_rec_update_param(info, name, value, line_number);
+               if (!strcmp(name, "node.startup")) {
+                       node_startup_value = strdup(value);
+               }
+               if (!strcmp(name, "node.conn[0].startup")) {
+                       conn_startup_value = strdup(value);
+               }
+               (void)idbm_rec_update_param(info, name, value, line_number);
        } while (line);
+       /*
+        * Compat hack:
+        * Keep node.startup and node.conn[0].startup in sync even
+        * if only one of those has been specified in the config file.
+        */
+       if (node_startup_value&&  !conn_startup_value) {
+               (void)idbm_rec_update_param(info, "node.conn[0].startup",
+                                           node_startup_value, -1);
+               free(node_startup_value);
+       }
+       if (conn_startup_value&&  !node_startup_value) {
+               (void)idbm_rec_update_param(info, "node.startup",
+                                           conn_startup_value, -1);
+               free(conn_startup_value);
+       }
  }

I think this is leaking memory.

If both the conn and node startup are set in the record then we leak.
They are both present in the record by default.

Also I think there is a possible leak if the node or conn startup
strings are present twice. In that case we will leak too. This should
not happen normally.

I made the attached patch and it fixed the leaks.
Thanks.

To be frank, I never understood the 'idbm_rec' logic completely.
I've just managed to solve this particular problem, and hadn't even thought of checking for memory leaks.

So yes, we'd definitely need this one.

Cheers,

Hannes
--
Dr. Hannes Reinecke                   zSeries & Storage
[email protected]                          +49 911 74053 688
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg
GF: J. Hawn, J. Guild, F. Imendörffer, HRB 16746 (AG Nürnberg)

--
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/open-iscsi?hl=en.

Reply via email to