if (err) { kfree(port); return err; } 
if (err) goto fail1; 
static int analog_connect(struct gameport *gameport, struct gameport_driver *drv){	struct analog_port *port;	int i;	int err;	if (!(port = kzalloc(sizeof(struct analog_port), GFP_KERNEL)))		return - ENOMEM;	err = analog_init_port(gameport, drv, port);	if (err) {		kfree(port);		return err;	}	err = analog_init_masks(port);	if (err) {		gameport_close(gameport);		gameport_set_drvdata(gameport, NULL);		kfree(port);		return err;	}	gameport_set_poll_handler(gameport, analog_poll);	gameport_set_poll_interval(gameport, 10);	for (i = 0; i < 2; i++)		if (port->analog[i].mask)			analog_init_device(port, port->analog + i, i);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/17dd3f0f7aa729a042af5d3318ff9b3e7781b45b/analog.c/buggy/drivers/input/joystick/analog.c