Revision bf74c7479ef47652005a2418eeb0d867451690da authored by Michael S. Tsirkin on 26 July 2006, 13:02:53 UTC, committed by Roland Dreier on 03 August 2006, 16:44:21 UTC
mthca_array_clear() does not clear the slot if the used count is
positive. This leads to crashes in mthca_qp_event() since that uses
mthca_array_get() to check that the qp is valid.

Discovered by Ali Ayoub.

Signed-off-by: Michael S. Tsirkin <mst@mellanox.co.il>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
1 parent 3f2792f
Raw File
dgrs.h
/*
 *	ioctl's for the Digi Intl. RightSwitch
 *
 *	These network driver ioctl's are a bit obtuse compared to the usual
 *	ioctl's for a "normal" device driver.  Hey, I didn't invent it.
 *
 *	Typical use:
 *
 *	struct ifreq	ifr;
 *	DGRS_IOCTL	ioc;
 *	int		x;
 *
 *	strcpy(ifr.ifr_name, "eth1");
 *	ifr.ifr_data = (caddr_t) &ioc;
 *	ioc.cmd = DGRS_GETMEM;
 *	ioc.len = sizeof(x);
 *	ioc.data = (caddr_t) &x;
 *	rc = ioctl(fd, DGRSIOCTL, &ifr);
 *	printf("rc=%d mem=%x\n", rc, x);
 *
 */
#include <linux/sockios.h>

#define DGRSIOCTL      SIOCDEVPRIVATE

typedef struct dgrs_ioctl {
	unsigned short cmd;	/* Command to run */
	unsigned short len;	/* Length of the data buffer */
	unsigned char  __user *data;	/* Pointer to the data buffer */
	unsigned short	port;	/* port number for command, if needed */
	unsigned short	filter;	/* filter number for command, if needed */
} DGRS_IOCTL;

/* 
 *	Commands for the driver 
 */
#define	DGRS_GETMEM		0x01	/* Get the dual port memory address */
#define	DGRS_SETFILTER		0x02	/* Set a filter */
back to top