From owner-svn-src-stable-10@freebsd.org Mon Oct 5 10:42:59 2015 Return-Path: Delivered-To: svn-src-stable-10@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 2126D9B1808; Mon, 5 Oct 2015 10:42:59 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 13080CF9; Mon, 5 Oct 2015 10:42:59 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.70]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t95AgwHD072683; Mon, 5 Oct 2015 10:42:58 GMT (envelope-from mav@FreeBSD.org) Received: (from mav@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t95Agwv5072682; Mon, 5 Oct 2015 10:42:58 GMT (envelope-from mav@FreeBSD.org) Message-Id: <201510051042.t95Agwv5072682@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mav set sender to mav@FreeBSD.org using -f From: Alexander Motin Date: Mon, 5 Oct 2015 10:42:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r288776 - stable/10/sys/cam/ctl X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-10@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for only the 10-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Oct 2015 10:42:59 -0000 Author: mav Date: Mon Oct 5 10:42:58 2015 New Revision: 288776 URL: https://svnweb.freebsd.org/changeset/base/288776 Log: MFC r287986: Fix memory corruption when >128K transferred through HA link. While there, do some cleaning. Modified: stable/10/sys/cam/ctl/ctl.c Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/cam/ctl/ctl.c ============================================================================== --- stable/10/sys/cam/ctl/ctl.c Mon Oct 5 10:42:07 2015 (r288775) +++ stable/10/sys/cam/ctl/ctl.c Mon Oct 5 10:42:58 2015 (r288776) @@ -1082,7 +1082,7 @@ ctl_isc_event_handler(ctl_ha_channel cha if (msg->dt.sg_sequence == 0) { i = msg->dt.kern_sg_entries + - io->scsiio.kern_data_len / + msg->dt.kern_data_len / CTL_HA_DATAMOVE_SEGMENT + 1; sgl = malloc(sizeof(*sgl) * i, M_CTL, M_WAITOK | M_ZERO); @@ -1118,11 +1118,8 @@ ctl_isc_event_handler(ctl_ha_channel cha sgl[i].len = msg->dt.sg_list[j].len; #if 0 - printf("%s: L: %p,%d -> %p,%d j=%d, i=%d\n", - __func__, - msg->dt.sg_list[j].addr, - msg->dt.sg_list[j].len, - sgl[i].addr, sgl[i].len, j, i); + printf("%s: DATAMOVE: %p,%lu j=%d, i=%d\n", + __func__, sgl[i].addr, sgl[i].len, j, i); #endif } @@ -12539,11 +12536,8 @@ ctl_datamove_remote_dm_write_cb(union ct { int retval; - retval = 0; - retval = ctl_datamove_remote_xfer(io, CTL_HA_DT_CMD_WRITE, ctl_datamove_remote_write_cb); - return (retval); } @@ -12573,11 +12567,7 @@ ctl_datamove_remote_write(union ctl_io * io->scsiio.be_move_done = ctl_datamove_remote_dm_write_cb; fe_datamove = ctl_io_port(&io->io_hdr)->fe_datamove; - fe_datamove(io); - - return; - } static int @@ -12652,14 +12642,13 @@ ctl_datamove_remote_read_cb(struct ctl_h /* XXX KDM add checks like the ones in ctl_datamove? */ fe_datamove = ctl_io_port(&io->io_hdr)->fe_datamove; - fe_datamove(io); } static int ctl_datamove_remote_sgl_setup(union ctl_io *io) { - struct ctl_sg_entry *local_sglist, *remote_sglist; + struct ctl_sg_entry *local_sglist; struct ctl_softc *softc; uint32_t len_to_go; int retval; @@ -12668,7 +12657,6 @@ ctl_datamove_remote_sgl_setup(union ctl_ retval = 0; softc = control_softc; local_sglist = io->io_hdr.local_sglist; - remote_sglist = io->io_hdr.remote_sglist; len_to_go = io->scsiio.kern_data_len; /* @@ -12694,7 +12682,7 @@ ctl_datamove_remote_sgl_setup(union ctl_ printf("%s: kern_sg_entries = %d\n", __func__, io->scsiio.kern_sg_entries); for (i = 0; i < io->scsiio.kern_sg_entries; i++) - printf("%s: sg[%d] = %p, %d\n", __func__, i, + printf("%s: sg[%d] = %p, %lu\n", __func__, i, local_sglist[i].addr, local_sglist[i].len); #endif @@ -12812,7 +12800,7 @@ ctl_datamove_remote_xfer(union ctl_io *i rq->callback = callback; #if 0 - printf("%s: %s: local %#x remote %#x size %d\n", __func__, + printf("%s: %s: local %p remote %p size %d\n", __func__, (command == CTL_HA_DT_CMD_WRITE) ? "WRITE" : "READ", rq->local, rq->remote, rq->size); #endif @@ -12858,8 +12846,6 @@ ctl_datamove_remote_read(union ctl_io *i io->io_hdr.remote_sglist = NULL; io->io_hdr.local_sglist = NULL; } - - return; } /*