<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Tahoma;
panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal;
font-family:"Calibri","sans-serif";
color:windowtext;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri","sans-serif";
color:#1F497D;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=WordSection1>
<p class=MsoNormal><span style='color:#1F497D'>This is a hack to cover up
sloppy coding. Please fix the code to not try to allocate zero bytes in the
first place, rather than use a macro to mask bad callers.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>-Fab<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
ofw-bounces@lists.openfabrics.org [mailto:ofw-bounces@lists.openfabrics.org] <b>On
Behalf Of </b>Tzachi Dar<br>
<b>Sent:</b> Tuesday, August 31, 2010 8:45 AM<br>
<b>To:</b> ofw@lists.openfabrics.org<br>
<b>Subject:</b> [ofw] Patch: Replace memory allocator with a memory allocator
that works natively with 0 bytes allocations<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Signed off by: xalex<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>This patch was already posted to the community in the past
and was not fully accepted. I would like to resend it again.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>The main goal of this fix was to allow calling
ExAllocatePoolWithTag with a value of zero. There have been cases that we have
noticed in which ExAllocatePoolWithTag was called with a value of zero, and
this has caused BSOD later.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Instead of looking for all places in the code where we
should fix, we have added this save macro that will return null in the case of
zero size. All callers are handling the return of NULL already.<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>Thanks<o:p></o:p></p>
<p class=MsoNormal>Tzachi<o:p></o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal>---
core/bus/kernel/bus_port_mgr.c Tue Apr 27
18:39:46 2010<o:p></o:p></p>
<p class=MsoNormal>+++ core/bus/kernel/bus_port_mgr.c Mon Jun 28
10:52:13 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -27,7 +27,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: bus_port_mgr.c 2510 2009-10-26 10:05:59Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: bus_port_mgr.c 5186 2009-11-29 11:58:37Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -1599,7 +1599,7 @@<o:p></o:p></p>
<p class=MsoNormal>
dev_id_size = p_ext->pdo.p_pdo_device_info->device_id_size;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
/* Device ID is "IBA\SID_<sid> where <sid> is the IO device
Service ID. */<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'vedq' );<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, dev_id_size, 'vedq' );<o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
BUS_TRACE_EXIT( BUS_DBG_ERROR,<o:p></o:p></p>
<p class=MsoNormal>@@ -1635,7 +1635,7 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
dev_id_size = p_ext->pdo.p_pdo_device_info->hardware_id_size;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'ihqp' );<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, dev_id_size, 'ihqp' );<o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
BUS_TRACE_EXIT( BUS_DBG_ERROR,<o:p></o:p></p>
<p class=MsoNormal>@@ -1669,8 +1669,8 @@<o:p></o:p></p>
<p class=MsoNormal>
p_ext = (bus_port_ext_t*)p_dev_obj->DeviceExtension;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
dev_id_size = p_ext->pdo.p_pdo_device_info->compatible_id_size;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'ihqp' );<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, dev_id_size, 'ihqp' );<o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
BUS_TRACE_EXIT( BUS_DBG_ERROR,<o:p></o:p></p>
<p class=MsoNormal>@@ -1753,8 +1753,7 @@<o:p></o:p></p>
<p class=MsoNormal>
return STATUS_NO_SUCH_DEVICE;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool,
p_ext->pdo.p_pdo_device_info->description_size, 'edqp' );<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool,
p_ext->pdo.p_pdo_device_info->description_size, 'edqp' );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>@@ -1796,6 +1795,12 @@<o:p></o:p></p>
<p class=MsoNormal>
return STATUS_NO_SUCH_DEVICE;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>+
if (!p_ext->pdo.h_ca)<o:p></o:p></p>
<p class=MsoNormal>+
{<o:p></o:p></p>
<p class=MsoNormal>+
BUS_TRACE_EXIT( BUS_DBG_ERROR, ("HCA is still or already not acquired
!\n") );<o:p></o:p></p>
<p class=MsoNormal>+
return STATUS_DEVICE_NOT_READY;<o:p></o:p></p>
<p class=MsoNormal>+
}<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>
p_hca_dev = p_ext->pdo.h_ca->p_hca_dev;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
/* Get the length of the HCA's location. */<o:p></o:p></p>
<p class=MsoNormal>---
core/complib/kernel/cl_memory_osd.c
Tue Apr 27 18:39:18 2010<o:p></o:p></p>
<p class=MsoNormal>+++ core/complib/kernel/cl_memory_osd.c
Mon Jun 28 10:52:13 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -26,7 +26,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: cl_memory_osd.c 920 2007-12-18 17:39:47Z stansmith
$<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: cl_memory_osd.c 4989 2009-10-22 16:04:40Z xalex $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -38,6 +38,7 @@<o:p></o:p></p>
<p class=MsoNormal>
IN const
size_t size,<o:p></o:p></p>
<p class=MsoNormal>
IN const
boolean_t
pageable )<o:p></o:p></p>
<p class=MsoNormal> {<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>
if( pageable )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
CL_ASSERT( KeGetCurrentIrql() < DISPATCH_LEVEL );<o:p></o:p></p>
<p class=MsoNormal>@@ -46,7 +47,7 @@<o:p></o:p></p>
<p class=MsoNormal>
else<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
CL_ASSERT( KeGetCurrentIrql() <= DISPATCH_LEVEL );<o:p></o:p></p>
<p class=MsoNormal>-
return( ExAllocatePoolWithTag( NonPagedPool, size, 'virp' ) );<o:p></o:p></p>
<p class=MsoNormal>+
return( ExAllocatePoolWithTagSafeEx( NonPagedPool, size, 'virp' ) );<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>---
core/complib/cl_map.c
Mon Aug 09 11:55:34 2010<o:p></o:p></p>
<p class=MsoNormal>+++ core/complib/cl_map.c
Mon Jun 28 10:52:13 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -27,7 +27,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: cl_map.c 2799 2010-05-21 19:10:08Z stansmith $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: cl_map.c 5147 2009-11-17 15:42:34Z leonid $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -703,6 +703,7 @@<o:p></o:p></p>
<p class=MsoNormal>
return( p_item );<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal> void<o:p></o:p></p>
<p class=MsoNormal> cl_qmap_apply_func(<o:p></o:p></p>
<p class=MsoNormal>
IN const cl_qmap_t*
const
p_map,<o:p></o:p></p>
<p class=MsoNormal>@@ -1706,67 +1707,6 @@<o:p></o:p></p>
<p class=MsoNormal>
p_map->state = CL_INITIALIZED;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
cl_fmap_remove_all( p_map );<o:p></o:p></p>
<p class=MsoNormal>-}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-cl_fmap_item_t*<o:p></o:p></p>
<p class=MsoNormal>-cl_fmap_match(<o:p></o:p></p>
<p class=MsoNormal>-
IN const cl_fmap_t
*const p_map,<o:p></o:p></p>
<p class=MsoNormal>- IN const void
*const
p_key,<o:p></o:p></p>
<p class=MsoNormal>- IN
cl_pfn_fmap_cmp_t
pfn_compare)<o:p></o:p></p>
<p class=MsoNormal>-{<o:p></o:p></p>
<p class=MsoNormal>-
cl_fmap_item_t *p_item;<o:p></o:p></p>
<p class=MsoNormal>-
int cmp;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
CL_ASSERT(p_map);<o:p></o:p></p>
<p class=MsoNormal>-
CL_ASSERT(p_map->state == CL_INITIALIZED);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_item = __cl_fmap_root(p_map);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
while (p_item != &p_map->nil) {<o:p></o:p></p>
<p class=MsoNormal>-
cmp = pfn_compare ? pfn_compare(p_key, p_item->p_key) :<o:p></o:p></p>
<p class=MsoNormal>-
p_map->pfn_compare(p_key, p_item->p_key);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
if (!cmp)<o:p></o:p></p>
<p class=MsoNormal>-
break; /* just right */<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
if (cmp < 0)<o:p></o:p></p>
<p class=MsoNormal>-
p_item =
p_item->p_left;
/* too small */<o:p></o:p></p>
<p class=MsoNormal>-
else<o:p></o:p></p>
<p class=MsoNormal>-
p_item =
p_item->p_right; /*
too big */<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
return (p_item);<o:p></o:p></p>
<p class=MsoNormal>-}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-cl_fmap_item_t*<o:p></o:p></p>
<p class=MsoNormal>-cl_fmap_get_next(<o:p></o:p></p>
<p class=MsoNormal>-
IN const cl_fmap_t *
const p_map,<o:p></o:p></p>
<p class=MsoNormal>-
IN const void
*const
p_key)<o:p></o:p></p>
<p class=MsoNormal>-{<o:p></o:p></p>
<p class=MsoNormal>-
cl_fmap_item_t *p_item;<o:p></o:p></p>
<p class=MsoNormal>-
cl_fmap_item_t *p_item_found;<o:p></o:p></p>
<p class=MsoNormal>-
int cmp;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
CL_ASSERT(p_map);<o:p></o:p></p>
<p class=MsoNormal>-
CL_ASSERT(p_map->state == CL_INITIALIZED);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_item = __cl_fmap_root(p_map);<o:p></o:p></p>
<p class=MsoNormal>-
p_item_found = (cl_fmap_item_t *) & p_map->nil;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
while (p_item != &p_map->nil) {<o:p></o:p></p>
<p class=MsoNormal>-
cmp = p_map->pfn_compare(p_key, p_item->p_key);<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
if (cmp < 0) {<o:p></o:p></p>
<p class=MsoNormal>-
p_item_found = p_item;<o:p></o:p></p>
<p class=MsoNormal>-
p_item =
p_item->p_left;
/* too small */<o:p></o:p></p>
<p class=MsoNormal>-
} else {<o:p></o:p></p>
<p class=MsoNormal>-
p_item =
p_item->p_right; /*
too big or match */<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
return (p_item_found);<o:p></o:p></p>
<p class=MsoNormal> }<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>---
core/iou/kernel/iou_ioc_mgr.c
Tue Apr 27 18:41:52 2010<o:p></o:p></p>
<p class=MsoNormal>+++ core/iou/kernel/iou_ioc_mgr.c
Mon Jun 28 10:52:15 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -27,7 +27,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: iou_ioc_mgr.c 2510 2009-10-26 10:05:59Z leonidk $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: iou_ioc_mgr.c 4989 2009-10-22 16:04:40Z xalex $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -952,7 +952,8 @@<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
dev_id_size = (p_ext->pdo.p_pdo_device_info)->device_id_size;<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, dev_id_size, 'didq' );<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, dev_id_size, 'didq' );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>@@ -1027,7 +1028,7 @@<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
hw_id_size = p_ext->pdo.p_pdo_device_info->hardware_id_size;<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, hw_id_size, 'ihqi' );<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, hw_id_size, 'ihqi' );<o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>
IOU_PRINT_EXIT( TRACE_LEVEL_ERROR, IOU_DBG_ERROR,<o:p></o:p></p>
<p class=MsoNormal>@@ -1142,8 +1143,8 @@<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
compat_id_size = p_ext->pdo.p_pdo_device_info->compatible_id_size;<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, compat_id_size, 'icqi' );<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool, compat_id_size, 'icqi' );<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>@@ -1302,7 +1303,7 @@<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
if ( p_ext->pdo.p_pdo_device_info ) <o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>-
p_string = ExAllocatePoolWithTag( NonPagedPool, p_ext->pdo.p_pdo_device_info->description_size,
<o:p></o:p></p>
<p class=MsoNormal>+
p_string = ExAllocatePoolWithTagSafeEx( NonPagedPool,
p_ext->pdo.p_pdo_device_info->description_size, <o:p></o:p></p>
<p class=MsoNormal>
'edqi' );<o:p></o:p></p>
<p class=MsoNormal>
if( !p_string )<o:p></o:p></p>
<p class=MsoNormal>
{<o:p></o:p></p>
<p class=MsoNormal>--- core/winmad/kernel/wm_driver.c Tue Apr
27 18:38:36 2010<o:p></o:p></p>
<p class=MsoNormal>+++ core/winmad/kernel/wm_driver.c Mon Jun 28 10:52:13 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -238,8 +238,8 @@<o:p></o:p></p>
<p class=MsoNormal>
attr = NULL;<o:p></o:p></p>
<p class=MsoNormal>
goto out;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
attr = ExAllocatePoolWithTag(PagedPool, size, 'acmw');<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+
attr = ExAllocatePoolWithTagSafeEx(PagedPool, size, 'acmw');<o:p></o:p></p>
<p class=MsoNormal>
if (attr == NULL) {<o:p></o:p></p>
<p class=MsoNormal>
goto out;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>@@ -269,7 +269,8 @@<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>
size = sizeof(WM_IB_PORT) * attr->num_ports;<o:p></o:p></p>
<p class=MsoNormal>-
pDevice->pPortArray = ExAllocatePoolWithTag(PagedPool, size, 'pimw');<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+
pDevice->pPortArray = ExAllocatePoolWithTagSafeEx(PagedPool, size, 'pimw') ;<o:p></o:p></p>
<p class=MsoNormal>
if (pDevice->pPortArray == NULL) {<o:p></o:p></p>
<p class=MsoNormal>
status = STATUS_NO_MEMORY;<o:p></o:p></p>
<p class=MsoNormal>
goto out;<o:p></o:p></p>
<p class=MsoNormal>--- core/winverbs/kernel/wv_device.c Tue Apr 27 18:38:56
2010<o:p></o:p></p>
<p class=MsoNormal>+++
core/winverbs/kernel/wv_device.c
Mon Jun 28 10:52:13 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -178,8 +178,8 @@<o:p></o:p></p>
<p class=MsoNormal>
attr = NULL;<o:p></o:p></p>
<p class=MsoNormal>
goto out;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>-<o:p></o:p></p>
<p class=MsoNormal>-
attr = ExAllocatePoolWithTag(PagedPool, size, 'acvw');<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+
attr = ExAllocatePoolWithTagSafeEx(PagedPool, size, 'acvw');<o:p></o:p></p>
<p class=MsoNormal>
if (attr == NULL) {<o:p></o:p></p>
<p class=MsoNormal>
goto out;<o:p></o:p></p>
<p class=MsoNormal>
}<o:p></o:p></p>
<p class=MsoNormal>@@ -210,7 +210,7 @@<o:p></o:p></p>
<p class=MsoNormal>
pDevice->PortCount = attr->num_ports;<o:p></o:p></p>
<p class=MsoNormal>
ExFreePoolWithTag(attr, 'acvw');<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>-
pDevice->pPorts = ExAllocatePoolWithTag(NonPagedPool, sizeof(WV_PORT) *<o:p></o:p></p>
<p class=MsoNormal>+
pDevice->pPorts = ExAllocatePoolWithTagSafeEx(NonPagedPool, sizeof(WV_PORT)
*<o:p></o:p></p>
<p class=MsoNormal>
pDevice->PortCount, 'cpvw');<o:p></o:p></p>
<p class=MsoNormal>
if (pDevice->pPorts == NULL) {<o:p></o:p></p>
<p class=MsoNormal>
return STATUS_NO_MEMORY;<o:p></o:p></p>
<p class=MsoNormal>--- inc/complib/cl_memory.h Tue Apr
27 18:44:09 2010<o:p></o:p></p>
<p class=MsoNormal>+++ inc/complib/cl_memory.h Mon Jun 28 10:52:18 2010<o:p></o:p></p>
<p class=MsoNormal>@@ -27,7 +27,7 @@<o:p></o:p></p>
<p class=MsoNormal> * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE<o:p></o:p></p>
<p class=MsoNormal> * SOFTWARE.<o:p></o:p></p>
<p class=MsoNormal> *<o:p></o:p></p>
<p class=MsoNormal>- * $Id: cl_memory.h 10 2005-05-24 00:33:03Z ftillier $<o:p></o:p></p>
<p class=MsoNormal>+ * $Id: cl_memory.h 4991 2009-10-22 16:21:47Z xalex $<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal>@@ -919,6 +919,21 @@<o:p></o:p></p>
<p class=MsoNormal> /*<o:p></o:p></p>
<p class=MsoNormal> * Define allocation macro.<o:p></o:p></p>
<p class=MsoNormal> */<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+/* From
WinDDK: "Avoid calling ExAllocatePoolWithTag with memory size == 0. <o:p></o:p></p>
<p class=MsoNormal>+
Doing so will result in pool header wastage"<o:p></o:p></p>
<p class=MsoNormal>+
Verifier
with low mem simulation will crash with memory size == 0<o:p></o:p></p>
<p class=MsoNormal>+*/<o:p></o:p></p>
<p class=MsoNormal>+#define ExAllocatePoolWithTagSafeEx( pageable, size, tag )
\<o:p></o:p></p>
<p class=MsoNormal>+
(size == 0 ? NULL : ExAllocatePoolWithTag(pageable, size, tag))<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+#define ExAllocatePoolWithTagSafeExNonPaged(size, tag ) \<o:p></o:p></p>
<p class=MsoNormal>+
(size == 0 ? NULL : ExAllocatePoolWithTag(NonPagedPool, size, tag
))
<o:p></o:p></p>
<p class=MsoNormal>+
<o:p></o:p></p>
<p class=MsoNormal>+#define ExAllocatePoolWithTagSafeExPaged(size, tag ) \<o:p></o:p></p>
<p class=MsoNormal>+
(size == 0 ? NULL : ExAllocatePoolWithTag(PagedPool, size, tag ))<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal>+<o:p></o:p></p>
<p class=MsoNormal> #if defined( CL_TRACK_MEM )<o:p></o:p></p>
<p class=MsoNormal> <o:p></o:p></p>
<p class=MsoNormal> #define cl_malloc( a ) \<o:p></o:p></p>
</div>
</body>
</html>