[dm-devel] multipath-tools/path_priority/pp_alua rtpg.c
Konrad Rzeszutek
konrad at virtualiron.com
Wed Apr 8 22:08:42 UTC 2009
On Wed, Apr 08, 2009 at 09:38:45PM -0000, bmarzins at sourceware.org wrote:
> CVSROOT: /cvs/dm
> Module name: multipath-tools
> Branch: RHEL5_FC6
> Changes by: bmarzins at sourceware.org 2009-04-08 21:38:45
>
> Modified files:
> path_priority/pp_alua: rtpg.c
>
> Log message:
> Fix for bz #490633. Adjust SCSI RTPG request buffer size in ALUA prioritizer.
> Already upstream.
>
> Patches:
> http://sourceware.org/cgi-bin/cvsweb.cgi/multipath-tools/path_priority/pp_alua/rtpg.c.diff?cvsroot=dm&only_with_tag=RHEL5_FC6&r1=1.3&r2=1.3.2.1
>
> --- multipath-tools/path_priority/pp_alua/rtpg.c 2006/07/13 19:49:23 1.3
> +++ multipath-tools/path_priority/pp_alua/rtpg.c 2009/04/08 21:38:44 1.3.2.1
> @@ -21,6 +21,7 @@
> #include <sys/stat.h>
> #include <unistd.h>
> #include <errno.h>
> +#include <inttypes.h>
>
> #define __user
> #include <scsi/sg.h>
> @@ -251,14 +252,38 @@
> int
> get_asymmetric_access_state(int fd, unsigned int tpg)
> {
> - unsigned char buf[128];
> + unsigned char *buf;
> struct rtpg_data * tpgd;
> struct rtpg_tpg_dscr * dscr;
> int rc;
> + int buflen;
> + uint32_t scsi_buflen;
>
> - rc = do_rtpg(fd, buf, sizeof(buf));
> + buflen = 128; /* Initial value from old code */
> + buf = (unsigned char *)malloc(buflen);
> + if (!buf) {
> + PRINT_DEBUG ("malloc failed: could not allocate"
> + "%u bytes\n", buflen);
> + return -RTPG_RTPG_FAILED;
> + }
> + rc = do_rtpg(fd, buf, buflen);
> if (rc < 0)
Shouldn't there be a 'free(buf)' here? ooh, looks like upstream is missing it
too.
> return rc;
> + scsi_buflen = buf[0] << 24 | buf[1] << 16 | buf[2] << 8 | buf[3];
> + if (buflen < (scsi_buflen + 4)) {
More information about the dm-devel
mailing list