[dm-devel] [PATCH V3 13/18] multipath: make reservation_key print out correctly

Chauhan, Vijay Vijay.Chauhan at netapp.com
Mon Jan 21 05:50:44 UTC 2013


Acked-by: Vijay Chauhan <vijay.chauhan at netapp.com>

Thanks,
Vijay

On January 12, 2013 11:35 AM; Benjamin Marzinski wrote:
>
>This patch fixes the reservation_key print functions, so they print
>it out like it was in the configuration file.  Also, it keeps
>cli_getprstatus() from writing over random memory.
>
>Signed-off-by: Benjamin Marzinski <bmarzins at redhat.com>
>---
> libmultipath/dict.c       | 31 +++++++++++++++++++++++++++++--
> multipathd/cli_handlers.c |  2 +-
> 2 files changed, 30 insertions(+), 3 deletions(-)
>
>diff --git a/libmultipath/dict.c b/libmultipath/dict.c
>index 788ffae..a54dda9 100644
>--- a/libmultipath/dict.c
>+++ b/libmultipath/dict.c
>@@ -2052,8 +2052,22 @@ snprint_mp_prio_args(char * buff, int len, void *
>data)
> static int
> snprint_mp_reservation_key (char * buff, int len, void * data)
> {
>+	int i;
>+	unsigned char *keyp;
>+	uint64_t prkey = 0;
> 	struct mpentry * mpe = (struct mpentry *)data;
>-	return snprintf(buff, len, "%s" , mpe->reservation_key);
>+
>+	if (!mpe->reservation_key)
>+		return 0;
>+	keyp = (unsigned char *)mpe->reservation_key;
>+	for (i = 0; i < 8; i++) {
>+		if (i > 0)
>+			prkey <<= 8;
>+		prkey |= *keyp;
>+		keyp++;
>+	}
>+
>+	return snprintf(buff, len, "0x%" PRIx64, prkey);
> }
>
> 	static int
>@@ -2721,7 +2735,20 @@ snprint_def_wwids_file (char * buff, int len, void *
>data)
> static int
> snprint_def_reservation_key(char * buff, int len, void * data)
> {
>-	return snprintf(buff, len, "%s", conf->reservation_key);
>+	int i;
>+	unsigned char *keyp;
>+	uint64_t prkey = 0;
>+
>+	if (!conf->reservation_key)
>+		return 0;
>+	keyp = (unsigned char *)conf->reservation_key;
>+	for (i = 0; i < 8; i++) {
>+		if (i > 0)
>+			prkey <<= 8;
>+		prkey |= *keyp;
>+		keyp++;
>+	}
>+	return snprintf(buff, len, "0x%" PRIx64, prkey);
> }
>
> static int
>diff --git a/multipathd/cli_handlers.c b/multipathd/cli_handlers.c
>index 6053b5a..4df37fe 100644
>--- a/multipathd/cli_handlers.c
>+++ b/multipathd/cli_handlers.c
>@@ -947,7 +947,7 @@ cli_getprstatus (void * v, char ** reply, int * len,
>void * data)
>
>
> 	sprintf(*reply,"%d",mpp->prflag);
>-	*reply[1]='\0';
>+	(*reply)[1]='\0';
>
>
> 	condlog(3, "%s: reply = %s", param, *reply);
>--
>1.8.0
>
>--
>dm-devel mailing list
>dm-devel at redhat.com
>https://www.redhat.com/mailman/listinfo/dm-devel




More information about the dm-devel mailing list