<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/infiniband/core, branch linux-2.6.30.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.30.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.30.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-04-08T20:42:33Z</updated>
<entry>
<title>RDMA/cma: Create cm id even when IB port is down</title>
<updated>2009-04-08T20:42:33Z</updated>
<author>
<name>Yossi Etigin</name>
</author>
<published>2009-04-08T20:42:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d2ca39f262806aa2f035f680a14aa55ff9e3d889'/>
<id>urn:sha1:d2ca39f262806aa2f035f680a14aa55ff9e3d889</id>
<content type='text'>
When doing rdma_resolve_addr(), if the relevant IB port is down, the
function fails and the cm_id is not bound to the correct device.
Therefore, application does not have a device handle and cannot wait
for the port to become active.  The function fails because the
underlying IPoIB interface is not joined to the broadcast group and
therefore the SA does not have a multicast record to take a Q_Key
from.

The fix is to use lazy Q_Key resolution - cma_set_qkey() will set
id_priv-&gt;qkey if it was not set, and will be called just before the
Q_Key is really required.

Signed-off-by: Yossi Etigin &lt;yosefe@voltaire.com&gt;
Acked-by: Sean Hefty &lt;sean.hefty@intel.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>RDMA/cma: Use rate from IPoIB broadcast when joining IPoIB multicast groups</title>
<updated>2009-04-01T20:55:32Z</updated>
<author>
<name>Yossi Etigin</name>
</author>
<published>2009-04-01T20:55:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=84adeee9aaa0d81712de1e0ea74caed3398e4a1d'/>
<id>urn:sha1:84adeee9aaa0d81712de1e0ea74caed3398e4a1d</id>
<content type='text'>
When joining an IPoIB multicast group, use the same rate as in the
broadcast group.  Otherwise, if the RDMA CM creates this group before
IPoIB does, it might get a different rate.  This will cause IPoIB to
fail joining to the same group later on, because IPoIB uses strict
rate selection.

Signed-off-by: Yossi Etigin &lt;yosefe@voltaire.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>Merge branches 'cxgb3', 'endian', 'ipath', 'ipoib', 'iser', 'mad', 'misc', 'mlx4', 'mthca', 'nes' and 'sysfs' into for-next</title>
<updated>2009-03-25T03:44:41Z</updated>
<author>
<name>Roland Dreier</name>
</author>
<published>2009-03-25T03:44:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=09f98bafea792644f2dea39eb080aa57d854f5b3'/>
<id>urn:sha1:09f98bafea792644f2dea39eb080aa57d854f5b3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>IB: Remove useless ibdev_is_alive() tests from sysfs code</title>
<updated>2009-03-04T23:22:39Z</updated>
<author>
<name>Roland Dreier</name>
</author>
<published>2009-03-04T23:22:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6432f366842c78d17b2df974c68f39cb5794f2c2'/>
<id>urn:sha1:6432f366842c78d17b2df974c68f39cb5794f2c2</id>
<content type='text'>
Some attribute show functions test ibdev_is_alive() to make sure that
it's OK to access device state.  However, the sysfs attributes will
not be registered until the device is fully initialized, and they'll
be unregistered before anything is torn down, so ibdev_is_alive()
doesn't do anything useful.  Remove it.

Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/sa_query: Fix AH leak due to update_sm_ah() race</title>
<updated>2009-03-03T22:30:01Z</updated>
<author>
<name>Jack Morgenstein</name>
</author>
<published>2009-03-03T22:30:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6b708b3dde0ab3a10a0eea7774c1d6482f32f587'/>
<id>urn:sha1:6b708b3dde0ab3a10a0eea7774c1d6482f32f587</id>
<content type='text'>
Our testing uncovered a race condition in ib_sa_event():

	spin_lock_irqsave(&amp;port-&gt;ah_lock, flags);
	if (port-&gt;sm_ah)
		kref_put(&amp;port-&gt;sm_ah-&gt;ref, free_sm_ah);
	port-&gt;sm_ah = NULL;
	spin_unlock_irqrestore(&amp;port-&gt;ah_lock, flags);

	schedule_work(&amp;sa_dev-&gt;port[event-&gt;element.port_num -
				    sa_dev-&gt;start_port].update_task);

If two events occur back-to-back (e.g., client-reregister and LID
change), both may pass the spinlock-protected code above before the
scheduled work updates the port-&gt;sm_ah handle.  Then if the scheduled
work ends up running twice, the second operation will then find a
non-NULL port-&gt;sm_ah, and will simply overwrite it in update_sm_ah --
resulting in an AH leak.

Signed-off-by: Jack Morgenstein &lt;jackm@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/mad: Fix ib_post_send_mad() returning 0 with no generate send comp</title>
<updated>2009-03-03T22:22:17Z</updated>
<author>
<name>Ralph Campbell</name>
</author>
<published>2009-03-03T22:22:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4780c1953f9bef07365b13af01ae4e8238ecd3de'/>
<id>urn:sha1:4780c1953f9bef07365b13af01ae4e8238ecd3de</id>
<content type='text'>
If ib_post_send_mad() returns 0, the API guarantees that there will be
a callback to send_buf-&gt;mad_agent-&gt;send_handler() so that the sender
can call ib_free_send_mad().  Otherwise, the ib_mad_send_buf will be
leaked and the mad_agent reference count will never go to zero and the
IB device module cannot be unloaded.  The above can happen without
this patch if process_mad() returns (IB_MAD_RESULT_SUCCESS |
IB_MAD_RESULT_CONSUMED).

If process_mad() returns IB_MAD_RESULT_SUCCESS and there is no agent
registered to receive the mad being sent, handle_outgoing_dr_smp()
returns zero which causes a MAD packet which is at the end of the
directed route to be incorrectly sent on the wire but doesn't cause a
hang since the HCA generates a send completion.

Signed-off-by: Ralph Campbell &lt;ralph.campbell@qlogic.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/mad: initialize mad_agent_priv before putting on lists</title>
<updated>2009-02-27T22:44:32Z</updated>
<author>
<name>Ralph Campbell</name>
</author>
<published>2009-02-27T22:44:32Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d9620a4c82c61a91c9313f80ba951c902573c028'/>
<id>urn:sha1:d9620a4c82c61a91c9313f80ba951c902573c028</id>
<content type='text'>
There is a potential race in ib_register_mad_agent() where the struct
ib_mad_agent_private is not fully initialized before it is added to
the list of agents per IB port. This means the ib_mad_agent_private
could be seen before the refcount, spin locks, and linked lists are
initialized.  The fix is to initialize the structure earlier.

Signed-off-by: Ralph Campbell &lt;ralph.campbell@qlogic.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB/mad: Fix null pointer dereference in local_completions()</title>
<updated>2009-02-27T18:34:30Z</updated>
<author>
<name>Ralph Campbell</name>
</author>
<published>2009-02-27T18:34:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1d9bc6d648ece77ffb41c5a577eab81fac5ad4de'/>
<id>urn:sha1:1d9bc6d648ece77ffb41c5a577eab81fac5ad4de</id>
<content type='text'>
handle_outgoing_dr_smp() can queue a struct ib_mad_local_private
*local on the mad_agent_priv-&gt;local_work work queue with
local-&gt;mad_priv == NULL if device-&gt;process_mad() returns
IB_MAD_RESULT_SUCCESS | IB_MAD_RESULT_REPLY and
(!ib_response_mad(&amp;mad_priv-&gt;mad.mad) ||
!mad_agent_priv-&gt;agent.recv_handler).

In this case, local_completions() will be called with local-&gt;mad_priv
== NULL. The code does check for this case and skips calling
recv_mad_agent-&gt;agent.recv_handler() but recv == 0 so
kmem_cache_free() is called with a NULL pointer.

Also, since recv isn't reinitialized each time through the loop, it
can cause a memory leak if recv should have been zero.

Signed-off-by: Ralph Campbell &lt;ralph.campbell@qlogic.com&gt;
</content>
</entry>
<entry>
<title>IB: Remove sysfs files before unregistering device</title>
<updated>2009-02-25T21:27:46Z</updated>
<author>
<name>Roland Dreier</name>
</author>
<published>2009-02-25T21:27:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9206dff15705267c19f8fed391c4fb95975540a3'/>
<id>urn:sha1:9206dff15705267c19f8fed391c4fb95975540a3</id>
<content type='text'>
Move the ib_device_unregister_sysfs() call from ib_dealloc_device() to
ib_unregister_device().  The old code allows device unregister to
proceed even if some sysfs files are open, which leaves a window where
userspace can open a file before a device is removed but then end up
reading the file after the device is removed, which leads to various
kernel crashes either because the device data structure is freed or
because the low-level driver code is gone after module removal.

By not returning from ib_unregister_device() until after all sysfs
entries are removed, we make sure that data structures and/or module
code is not freed until after all sysfs access is done.

Reported-by: Jack Morgenstein &lt;jackm@dev.mellanox.co.il&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
<entry>
<title>IB: Remove __constant_{endian} uses</title>
<updated>2009-01-18T01:11:57Z</updated>
<author>
<name>Harvey Harrison</name>
</author>
<published>2009-01-18T01:11:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9c3da0991754d480328eeaa2b90cb231a1cea9b6'/>
<id>urn:sha1:9c3da0991754d480328eeaa2b90cb231a1cea9b6</id>
<content type='text'>
The base versions handle constant folding just fine, use them
directly.  The replacements are OK in the include/ files as they are
not exported to userspace so we don't need the __ prefixed versions.

This patch does not affect code generation at all.

Signed-off-by: Harvey Harrison &lt;harvey.harrison@gmail.com&gt;
Signed-off-by: Roland Dreier &lt;rolandd@cisco.com&gt;
</content>
</entry>
</feed>
