From 0cb2df380b8845f94f1b3c492ad3cc79f5112630 Mon Sep 17 00:00:00 2001 From: Andrey Utkin Date: Wed, 29 Oct 2014 13:03:52 -0300 Subject: [media] solo6x10: free DMA allocation when releasing encoder Fixes this warning: [ 956.730136] ------------[ cut here ]------------ [ 956.730143] WARNING: CPU: 1 PID: 10134 at lib/dma-debug.c:963 dma_debug_device_change+0x191/0x1f0() [ 956.730146] pci 0000:07:05.0: DMA-API: device driver has pending DMA allocations while released from device [count=8] One of leaked entries details: [device address=0x00000000d3d57000] [size=512 bytes] [mapped with DMA_BIDIRECTIONAL] [mapped as coherent] [ 956.730147] Modules linked in: solo6x10(-) videobuf2_dma_contig videobuf2_dma_sg videobuf2_memops videobuf2_core ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat videobuf_vmalloc videobuf_core v4l2_common videodev rt2800usb rt2800lib rt2x00usb rt2x00lib mac80211 cfg80211 crc_ccitt usbkbd hid_a4tech hid_generic usbhid snd_hda_codec_hdmi snd_hda_codec_via snd_hda_codec_generic snd_hda_intel snd_hda_controller snd_hda_codec snd_hwdep snd_pcm x86_pkg_temp_thermal snd_timer snd soundcore [ 956.730172] CPU: 1 PID: 10134 Comm: rmmod Not tainted 3.18.0-rc1-next-20141023-zver-dirty #24 [ 956.730173] Hardware name: System manufacturer System Product Name/P8H77-V, BIOS 0501 02/28/2012 [ 956.730175] 0000000000000009 ffff8801df9e3c58 ffffffff817ffe6b 0000000000000001 [ 956.730177] ffff8801df9e3ca8 ffff8801df9e3c98 ffffffff81091ec7 0000000000000046 [ 956.730180] ffff880215457e90 0000000000000008 ffffffff81cbb10f ffff880215570098 [ 956.730183] Call Trace: [ 956.730188] [] dump_stack+0x4f/0x7c [ 956.730192] [] warn_slowpath_common+0x87/0xb0 [ 956.730194] [] warn_slowpath_fmt+0x41/0x50 [ 956.730197] [] ? dma_debug_device_change+0xb8/0x1f0 [ 956.730199] [] dma_debug_device_change+0x191/0x1f0 [ 956.730203] [] notifier_call_chain+0x4d/0x70 [ 956.730205] [] __blocking_notifier_call_chain+0x59/0x80 [ 956.730207] [] blocking_notifier_call_chain+0x11/0x20 [ 956.730211] [] __device_release_driver+0xcf/0xf0 [ 956.730213] [] driver_detach+0xc8/0xd0 [ 956.730215] [] bus_remove_driver+0x57/0xd0 [ 956.730218] [] driver_unregister+0x29/0x60 [ 956.730221] [] pci_unregister_driver+0x21/0x90 [ 956.730225] [] solo_pci_driver_exit+0x10/0x12 [solo6x10] [ 956.730228] [] SyS_delete_module+0x170/0x1f0 [ 956.730232] [] ? trace_hardirqs_on_thunk+0x3a/0x3f [ 956.730234] [] system_call_fastpath+0x12/0x17 [ 956.730235] ---[ end trace e730af02713a6c53 ]--- [ 956.730237] Mapped at: [ 956.730238] [] debug_dma_alloc_coherent+0x3c/0xb0 [ 956.730240] [] solo_enc_v4l2_init+0x706/0xba0 [solo6x10] [ 956.730243] [] solo_pci_probe+0x503/0x700 [solo6x10] [ 956.730245] [] local_pci_probe+0x49/0xa0 [ 956.730248] [] pci_device_probe+0xd1/0x120 Signed-off-by: Andrey Utkin Signed-off-by: Hans Verkuil Signed-off-by: Mauro Carvalho Chehab diff --git a/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c b/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c index 6cd6a25..9afeb69 100644 --- a/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c +++ b/drivers/media/pci/solo6x10/solo6x10-v4l2-enc.c @@ -1385,6 +1385,9 @@ static void solo_enc_free(struct solo_enc_dev *solo_enc) if (solo_enc == NULL) return; + pci_free_consistent(solo_enc->solo_dev->pdev, + sizeof(struct solo_p2m_desc) * solo_enc->desc_nelts, + solo_enc->desc_items, solo_enc->desc_dma); video_unregister_device(solo_enc->vfd); v4l2_ctrl_handler_free(&solo_enc->hdl); kfree(solo_enc); -- cgit v0.10.2