memset(firmware, 0, sizeof (*firmware)); 
_request_firmware(const struct firmware **firmware_p, const char *name,		 struct device *device, int hotplug){	struct class_device *class_dev;	struct firmware_priv *fw_priv;	struct firmware *firmware;	int retval;	if (!firmware_p)		return -EINVAL;	*firmware_p = firmware = kmalloc(sizeof (struct firmware), GFP_KERNEL);	if (!firmware) {		printk(KERN_ERR "%s: kmalloc(struct firmware) failed\n",		       __FUNCTION__);		retval = -ENOMEM;		goto out;	}	memset(firmware, 0, sizeof (*firmware));	retval = fw_setup_class_device(firmware, &class_dev, name, device,		hotplug);	if (retval)		goto error_kfree_fw;	fw_priv = class_get_devdata(class_dev);	if (hotplug) {		if (loading_timeout > 0) {			fw_priv->timeout.expires = jiffies + loading_timeout * HZ;			add_timer(&fw_priv->timeout);		}		kobject_hotplug(&class_dev->kobj, KOBJ_ADD);		wait_for_completion(&fw_priv->completion);		set_bit(FW_STATUS_DONE, &fw_priv->status);		del_timer_sync(&fw_priv->timeout);	} else		wait_for_completion(&fw_priv->completion);	down(&fw_lock);	if (!fw_priv->fw->size || test_bit(FW_STATUS_ABORT, &fw_priv->status)) {		retval = -ENOENT;		release_firmware(fw_priv->fw);		*firmware_p = NULL;	}	fw_priv->fw = NULL;	up(&fw_lock);	class_device_unregister(class_dev);	goto out;error_kfree_fw:	kfree(firmware);	*firmware_p = NULL;out:	return retval;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4aed0644d684428e811bb6944f032b460a3ab165/firmware_class.c/clean/drivers/base/firmware_class.c