Showing error 789

User: Jiri Slaby
Error type: Memory Leak
Error type description: There the code omits to free some allocated memory
File location: drivers/pci/hotplug/pciehp_ctrl.c
Line in file: 356
Project: Linux Kernel
Project version: 2.6.28
Tools: Stanse (1.2)
Entered: 2011-11-07 22:26:27 UTC


Source:

326                mutex_unlock(&p_slot->lock);
327                ctrl_dbg(p_slot->ctrl,
328                         "Disabling domain:bus:device=%04x:%02x:%02x\n",
329                         pci_domain_nr(p_slot->ctrl->pci_dev->subordinate),
330                         p_slot->bus, p_slot->device);
331                pciehp_disable_slot(p_slot);
332                mutex_lock(&p_slot->lock);
333                p_slot->state = STATIC_STATE;
334                break;
335        case POWERON_STATE:
336                mutex_unlock(&p_slot->lock);
337                if (pciehp_enable_slot(p_slot) &&
338                    PWR_LED(p_slot->ctrl))
339                        p_slot->hpc_ops->green_led_off(p_slot);
340                mutex_lock(&p_slot->lock);
341                p_slot->state = STATIC_STATE;
342                break;
343        default:
344                break;
345        }
346        mutex_unlock(&p_slot->lock);
347
348        kfree(info);
349}
350
351void pciehp_queue_pushbutton_work(struct work_struct *work)
352{
353        struct slot *p_slot = container_of(work, struct slot, work.work);
354        struct power_work_info *info;
355
356        info = kmalloc(sizeof(*info), GFP_KERNEL);
357        if (!info) {
358                ctrl_err(p_slot->ctrl, "%s: Cannot allocate memory\n",
359                         __func__);
360                return;
361        }
362        info->p_slot = p_slot;
363        INIT_WORK(&info->work, pciehp_power_thread);
364
365        mutex_lock(&p_slot->lock);
366        switch (p_slot->state) {
Show full sources