<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3243" name=GENERATOR></HEAD>
<BODY>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>On x86 platform 
casting expression like </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>    
(LONG_PTR)p_obj </SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>doesn't increase the 
size of pointer.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>As a result 
printf() function - driven by %I64 size modifier - takes the next 
parameter as a second part of the previous one.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>It causes a 
corrupted print at least and a crash at most.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2><SPAN 
class=283101416-18012009></SPAN></FONT> </DIV>
<DIV><FONT face=Arial size=2><SPAN class=283101416-18012009>The patch replaces 
%I64Ix fixed-size format modifier by the  variable-sized %p 
one.</SPAN></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2>Index: 
core/al/al_common.c<BR>===================================================================<BR>--- 
core/al/al_common.c (revision 1835)<BR>+++ 
core/al/al_common.c (working copy)<BR>@@ -180,7 +180,7 
@@<BR>  CL_ASSERT( p_obj && pfn_free 
);<BR>  CL_ASSERT( p_obj->state == CL_UNINITIALIZED 
);<BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x\n", (LONG_PTR)p_obj ) 
);<BR>+  ("%p\n", p_obj ) );<BR> <BR>  /* Initialize 
the object. */<BR>  p_obj->async_item.pfn_callback = 
async_destroy_cb;<BR>@@ -278,9 +278,9 @@<BR>  CL_ASSERT( 
p_child_obj->state == CL_INITIALIZED );<BR> <BR>  AL_PRINT( 
TRACE_LEVEL_INFORMATION, AL_DBG_AL_OBJ,<BR>-  ("%016I64x(%s) to 
%016I64x(%s)\n",<BR>-  (LONG_PTR)p_child_obj, ib_get_obj_type( 
p_child_obj ),<BR>-  (LONG_PTR)p_parent_obj, ib_get_obj_type( 
p_parent_obj ) ) );<BR>+  ("%p(%s) to 
%p(%s)\n",<BR>+  p_child_obj, ib_get_obj_type( p_child_obj 
),<BR>+  p_parent_obj, ib_get_obj_type( p_parent_obj ) ) 
);<BR> <BR>  /* Insert the object into the parent's object 
tracking list. */<BR>  p_child_obj->p_ci_ca = 
p_parent_obj->p_ci_ca;<BR>@@ -347,9 +347,9 
@@<BR>   p_parent_obj->state == CL_DESTROYING 
);<BR> <BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x(%s) from 
%016I64x(%s)\n",<BR>-  (LONG_PTR)p_obj, ib_get_obj_type( p_obj 
),<BR>-  (LONG_PTR)p_parent_obj, ib_get_obj_type( p_parent_obj ) ) 
);<BR>+  ("%p(%s) from %p(%s)\n",<BR>+  p_obj, 
ib_get_obj_type( p_obj ),<BR>+  p_parent_obj, ib_get_obj_type( 
p_parent_obj ) ) );<BR> <BR>  /* Remove the object from the 
parent's list. */<BR>  cl_spinlock_acquire( &p_parent_obj->lock 
);<BR>@@ -373,7 +373,7 @@<BR> <BR>  AL_ENTER( AL_DBG_AL_OBJ 
);<BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x(%s)\n", (LONG_PTR)p_obj, 
ib_get_obj_type( p_obj ) ) );<BR>+  ("%p(%s)\n", p_obj, 
ib_get_obj_type( p_obj ) ) );<BR>  ref_cnt = cl_atomic_inc( 
&p_obj->ref_cnt );<BR>  CL_ASSERT( ref_cnt != 1 || 
p_obj->type == AL_OBJ_TYPE_H_CQ );<BR> <BR>@@ -401,7 +401,7 
@@<BR>  CL_ASSERT( p_obj->ref_cnt 
);<BR> <BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x(%s)\n", (LONG_PTR)p_obj, 
ib_get_obj_type( p_obj ) ) );<BR>+  ("%p(%s)\n", p_obj, 
ib_get_obj_type( p_obj ) ) );<BR> <BR>  ref_cnt = cl_atomic_dec( 
&p_obj->ref_cnt );<BR> <BR>@@ -569,7 +569,7 
@@<BR>   p_obj->state == CL_DESTROYING 
);<BR> <BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x(%s)\n", (LONG_PTR)p_obj, 
ib_get_obj_type( p_obj ) ) );<BR>+  ("%p(%s)\n", p_obj, 
ib_get_obj_type( p_obj ) ) );<BR> <BR>  /*<BR>   * Lock 
to synchronize with asynchronous event processing.<BR>@@ -614,7 +614,7 
@@<BR>   p_child_obj = PARENT_STRUCT( p_list_item, al_obj_t, 
pool_item );<BR>   CL_ASSERT( p_child_obj->pfn_destroy 
);<BR>   AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-   ("bye bye: %016I64x(%s)\n", 
(LONG_PTR)p_child_obj,<BR>+   ("bye bye: %p(%s)\n", 
p_child_obj,<BR>    ib_get_obj_type( p_child_obj ) ) 
);<BR>   ref_al_obj( p_child_obj 
);<BR>   p_child_obj->pfn_destroy( p_child_obj, NULL );<BR>@@ 
-659,7 +659,7 @@<BR>  CL_ASSERT( !p_obj->ref_cnt 
);<BR> <BR>  AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_AL_OBJ,<BR>-  ("%016I64x\n", (LONG_PTR)p_obj ) 
);<BR>+  ("%p\n", p_obj ) );<BR> <BR>  /* Cleanup any 
hardware related resources. */<BR>  if( p_obj->pfn_cleanup 
)<BR>Index: 
core/al/al_common.h<BR>===================================================================<BR>--- 
core/al/al_common.h (revision 1835)<BR>+++ 
core/al/al_common.h (working copy)<BR>@@ -326,7 +326,7 
@@<BR> ib_get_obj_type(<BR>  IN    al_obj_t * 
const   p_obj )<BR> {<BR>- if( AL_BASE_TYPE( 
p_obj->type ) > AL_OBJ_TYPE_INVALID )<BR>+ if( AL_BASE_TYPE( 
p_obj->type ) >= AL_OBJ_TYPE_INVALID )<BR>   return( 
ib_obj_type_str[AL_OBJ_TYPE_UNKNOWN] );<BR> <BR>  return( 
ib_obj_type_str[ AL_BASE_TYPE( p_obj->type ) ] );<BR>Index: 
core/al/al_mad.c<BR>===================================================================<BR>--- 
core/al/al_mad.c (revision 1835)<BR>+++ core/al/al_mad.c (working 
copy)<BR>@@ -680,13 +680,13 @@<BR>    cl_ptr_vector_set( 
p_method_ptr_vector, i, h_mad_reg 
);<BR> <BR>    AL_PRINT( TRACE_LEVEL_INFORMATION, 
AL_DBG_MAD_SVC,<BR>-    ("Register version:%u (%u) 
class:0x%02X(%u) method:0x%02X 
Hdl:%016I64x\n",<BR>+    ("Register version:%u (%u) 
class:0x%02X(%u) method:0x%02X 
Hdl:%p\n",<BR>     p_mad_svc->mgmt_version,<BR>     __mgmt_version_index( 
p_mad_svc->mgmt_version 
),<BR>     p_mad_svc->mgmt_class,<BR>     __mgmt_class_index( 
p_mad_svc->mgmt_class 
),<BR>     i,<BR>-    (LONG_PTR)h_mad_reg) 
);<BR>+    h_mad_reg) 
);<BR>   }<BR>  }<BR> <BR>@@ -841,7 +841,7 
@@<BR>  AL_ENTER( AL_DBG_MAD_SVC );<BR> <BR>  AL_PRINT( 
TRACE_LEVEL_INFORMATION, AL_DBG_MAD_SVC,<BR>-  ("p_mad_wr 
0x%016I64x\n", (LONG_PTR)p_mad_wr ) );<BR>+  ("p_mad_wr 0x%p\n", 
p_mad_wr ) );<BR> <BR>  /* Get the MAD header. 
*/<BR>  p_mad_hdr = get_mad_hdr_from_wr( p_mad_wr );<BR>Index: 
core/al/kernel/al_dev.c<BR>===================================================================<BR>--- 
core/al/kernel/al_dev.c (revision 1835)<BR>+++ 
core/al/kernel/al_dev.c (working copy)<BR>@@ -443,8 +443,8 
@@<BR>  p_open_context = 
p_io_stack->FileObject->FsContext;<BR> <BR>  AL_PRINT( 
TRACE_LEVEL_INFORMATION, AL_DBG_DEV,<BR>-  ("al_dev_ioctl: buf_size 
(%d) p_buf (%016I64x).\n",<BR>-  cl_ioctl_in_size( h_ioctl ), 
(LONG_PTR)cl_ioctl_in_buf( h_ioctl )) );<BR>+  ("al_dev_ioctl: 
buf_size (%d) p_buf (%p).\n",<BR>+  cl_ioctl_in_size( h_ioctl ), 
cl_ioctl_in_buf( h_ioctl )) );<BR> <BR>  /* Process the ioctl 
command. */<BR>  if( IS_AL_PROXY_IOCTL(cl_ioctl_ctl_code( h_ioctl )) 
)<BR>Index: 
core/al/kernel/al_mad_pool.c<BR>===================================================================<BR>--- 
core/al/kernel/al_mad_pool.c (revision 1835)<BR>+++ 
core/al/kernel/al_mad_pool.c (working copy)<BR>@@ -271,7 +271,7 
@@<BR>  if( busy )<BR>  {<BR>   AL_PRINT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("h_pool (0x%016I64x) is 
busy!.\n", (ULONG64)(ULONG_PTR)h_pool) );<BR>+   ("h_pool (0x%p) 
is busy!.\n", h_pool) );<BR>   return 
IB_RESOURCE_BUSY;<BR>  }<BR> <BR>Index: 
core/al/kernel/al_proxy.c<BR>===================================================================<BR>--- 
core/al/kernel/al_proxy.c (revision 1835)<BR>+++ 
core/al/kernel/al_proxy.c (working copy)<BR>@@ -301,8 +301,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_H_CQ )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>@@ -343,8 +343,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_AL_MGR )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>@@ -891,8 +891,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_PNP_MGR )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>@@ -1035,8 +1035,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_PNP_MGR )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>@@ -1117,8 +1117,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_PNP_MGR )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>Index: 
core/al/kernel/al_proxy_cep.c<BR>===================================================================<BR>--- 
core/al/kernel/al_proxy_cep.c (revision 1835)<BR>+++ 
core/al/kernel/al_proxy_cep.c (working copy)<BR>@@ -835,8 +835,8 
@@<BR>  if( (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_CM )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>Index: 
core/al/kernel/al_proxy_subnet.c<BR>===================================================================<BR>--- 
core/al/kernel/al_proxy_subnet.c (revision 1835)<BR>+++ 
core/al/kernel/al_proxy_subnet.c (working copy)<BR>@@ -230,8 +230,8 
@@<BR>   (uintn_t)p_io_stack->FileObject->FsContext2 != 
AL_OBJ_TYPE_SA_REQ_SVC )<BR>  {<BR>   AL_PRINT_EXIT( 
TRACE_LEVEL_ERROR, AL_DBG_ERROR,<BR>-   ("Invalid file object 
type for request: 
%016I64x\n",<BR>-   (LONG_PTR)p_io_stack->FileObject->FsContext2) 
);<BR>+   ("Invalid file object type for request: 
%p\n",<BR>+   p_io_stack->FileObject->FsContext2) 
);<BR>   return 
CL_INVALID_PARAMETER;<BR>  }<BR> <BR>Index: 
core/al/kernel/al_smi.c<BR>===================================================================<BR>--- 
core/al/kernel/al_smi.c (revision 1835)<BR>+++ 
core/al/kernel/al_smi.c (working copy)<BR>@@ -3430,8 +3430,8 
@@<BR>   if( status != IB_SUCCESS 
)<BR>   {<BR>    AL_PRINT( TRACE_LEVEL_ERROR, 
AL_DBG_ERROR,<BR>-    ("Failed to post receive 
%016I64x\n",<BR>-    (LONG_PTR)p_al_element) 
);<BR>+    ("Failed to post receive 
%p\n",<BR>+    p_al_element) 
);<BR>    cl_qlist_remove_item( 
&p_spl_qp_svc->recv_queue,<BR>     &p_al_element->list_item 
);<BR> <BR></FONT></DIV></BODY></HTML>