Loading drivers/ieee1394/dv1394.c +13 −23 Original line number Original line Diff line number Diff line Loading @@ -2255,40 +2255,30 @@ static int dv1394_init(struct ti_ohci *ohci, enum pal_or_ntsc format, enum modes return 0; return 0; } } static void dv1394_un_init(struct video_card *video) { /* obviously nobody has the driver open at this point */ do_dv1394_shutdown(video, 1); kfree(video); } static void dv1394_remove_host(struct hpsb_host *host) static void dv1394_remove_host(struct hpsb_host *host) { { struct video_card *video; struct video_card *video, *tmp_video; unsigned long flags; unsigned long flags; int id = host->id, found_ohci_card = 0; int found_ohci_card = 0; /* find the corresponding video_cards */ do { do { struct video_card *tmp_vid; video = NULL; video = NULL; spin_lock_irqsave(&dv1394_cards_lock, flags); spin_lock_irqsave(&dv1394_cards_lock, flags); list_for_each_entry(tmp_vid, &dv1394_cards, list) { list_for_each_entry(tmp_video, &dv1394_cards, list) { if ((tmp_vid->id >> 2) == id) { if ((tmp_video->id >> 2) == host->id) { list_del(&tmp_vid->list); list_del(&tmp_video->list); video = tmp_vid; video = tmp_video; found_ohci_card = 1; found_ohci_card = 1; break; break; } } } } spin_unlock_irqrestore(&dv1394_cards_lock, flags); spin_unlock_irqrestore(&dv1394_cards_lock, flags); if (video) if (video) { dv1394_un_init(video); do_dv1394_shutdown(video, 1); } while (video != NULL); kfree(video); } } while (video); if (found_ohci_card) if (found_ohci_card) class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, Loading Loading
drivers/ieee1394/dv1394.c +13 −23 Original line number Original line Diff line number Diff line Loading @@ -2255,40 +2255,30 @@ static int dv1394_init(struct ti_ohci *ohci, enum pal_or_ntsc format, enum modes return 0; return 0; } } static void dv1394_un_init(struct video_card *video) { /* obviously nobody has the driver open at this point */ do_dv1394_shutdown(video, 1); kfree(video); } static void dv1394_remove_host(struct hpsb_host *host) static void dv1394_remove_host(struct hpsb_host *host) { { struct video_card *video; struct video_card *video, *tmp_video; unsigned long flags; unsigned long flags; int id = host->id, found_ohci_card = 0; int found_ohci_card = 0; /* find the corresponding video_cards */ do { do { struct video_card *tmp_vid; video = NULL; video = NULL; spin_lock_irqsave(&dv1394_cards_lock, flags); spin_lock_irqsave(&dv1394_cards_lock, flags); list_for_each_entry(tmp_vid, &dv1394_cards, list) { list_for_each_entry(tmp_video, &dv1394_cards, list) { if ((tmp_vid->id >> 2) == id) { if ((tmp_video->id >> 2) == host->id) { list_del(&tmp_vid->list); list_del(&tmp_video->list); video = tmp_vid; video = tmp_video; found_ohci_card = 1; found_ohci_card = 1; break; break; } } } } spin_unlock_irqrestore(&dv1394_cards_lock, flags); spin_unlock_irqrestore(&dv1394_cards_lock, flags); if (video) if (video) { dv1394_un_init(video); do_dv1394_shutdown(video, 1); } while (video != NULL); kfree(video); } } while (video); if (found_ohci_card) if (found_ohci_card) class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, class_device_destroy(hpsb_protocol_class, MKDEV(IEEE1394_MAJOR, Loading