summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2008-03-05 V4L1 - fix v4l_compat_translate_ioctl possible NULL derefMauro Carvalho Chehab
From: Cyrill Gorcunov <gorcunov@gmail.com> There are possible NULL pointer derefs in case of kzalloc fails so fix them. Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-05 add flag to allow software demux to recognize the output typeMauro Carvalho Chehab
From: Andreas Oberritter <obi@linuxtv.org> Previously, the macro DVR_FEED, which is used to recognize and filter out duplicate packets going to the DVR device, used the TS_PAYLOAD_ONLY flag to identify a packet's destination. This kind of filtering was introduced by the following two changesets: Now, that it is possible to record TS PIDs using the demux device by setting the output type to DMX_OUT_TSDEMUX_TAP, checking TS_PAYLOAD_ONLY is not sufficient anymore. Therefore another flag, TS_DEMUX, is added to specify the output type of a feed. This allows multiple clients to filter the same TS PID on a demux device simultaneously. Signed-off-by: Andreas Oberritter <obi@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-03saa7134: support 2nd DVB-S section of the MD8800Hartmut Hackmann
From: Hartmut Hackmann <hartmut.hackmann@t-online.de> There are some restrictions: - The 2nd DVB-S section will only work if the 1st is configured for DVB-S too. so "options saa7134-dvb use_frontend=0,1" won't work. - Currently it is not possible to set the higher LNB supply voltages, so 14V instead of 13V in the 2nd section. - It is not possibe to turn off the 2nd LNB supply independently. This comes from the problem that the 2nd section can't access the i2c interface of the LNB supply chip. Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
2008-03-02saa7134: Add DVB-S support for the MD 1734 cards with 2 saa7134Hartmut Hackmann
From: Hartmut Hackmann <hartmut.hackmann@t-online.de> Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
2008-03-02saa7134: clear audio DSP interface after access errorHartmut Hackmann
From: Hartmut Hackmann <hartmut.hackmann@t-online.de> In the case of an access error to the high latency registers of the audio DSP, the interface needs to be cleared, otherwise a cascade of errors occurs. This patch is closely modeled after a proposal by Mirek Slugen Signed-off-by: Hartmut Hackmann <hartmut.hackmann@t-online.de>
2008-02-27 usb/opera1.c: fix a memory leakMauro Carvalho Chehab
From: Adrian Bunk <bunk@kernel.org> This patch fixes a memory leak in the "testval == 0x67" case spotted by the Coverity checker. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-07cx88: Fix memset for tuner-xc3028 controlMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Fix a cut-and-paste error Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-06Fix bad whitespacesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-06cx88-dvb: fix an OOPS for xc3028 devices, when dvb_attach failsMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> If dvb_attach fails, dev->dvb.frontend is NULL. This will produce an OOPS, as reported. Thanks to Vanessa Ezekowitz <vanessaezekowitz@gmail.com> CC: Vanessa Ezekowitz <vanessaezekowitz@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-04merge: http://linuxtv.org/hg/~mcisely/pvrusb2Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-01: tuner and radio addresses are missing for the PixelView PlayTV cardMauro Carvalho Chehab
From: Wojciech Migda <wojtek.golf@interia.pl> The PixelView PlayTV card definition structure was missing initialization of the tuner_addr and radio_addr fields. As a result it was impossible to have the tuner initialized using parameters specified while loading the bttv.ko module. This regression became visible after the v4l rearrangements introduced somewhere around 2.6.15 kernel version. The root cause for the tuner initialization failure is located in the attach_inform function in the bttv-i2c.c file. There at the very beginning the addr variable holding the tuner device address is initialized with the value taken from the bttv_tvcards array. For the PixelView PlayTV card the tuner address field (and the radio address as well) was uninitialized, and thus equal 0. Later in that function execution of the TUNER_SET_TYPE_ADDR tuner command is guarded with check for the tuner address either equal ADDR_UNSET, or client->addr. Since both are non-zero (the latter in case of the card owned by me at the runtime is equal 0x61) the TUNER_SET_TYPE_ADDR command is not executed, and consequently in the tuner_attach function in the tuner-core.c file call to i2c_attach_client does not result in assigning the tuner type variable with the requested value. Providing initialization of the tuner_addr and radio_addr with ADDR_UNSET values as it is already done for other tv cards defined in bttv-cards.c ensures that the tuner initialization is done correctly, just as it used to be in the 2.6.14 kernel. Signed-off-by: Wojciech Migda <wojtek.golf@interia.pl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-28 DMX_OUT_TSDEMUX_TAP: record two streams from same mux, resendMauro Carvalho Chehab
From: Peter Hartley <pdh@utter.chaos.org.uk> Currently (in linux-2.6.24, but linux-dvb hg looks similar), the dmx_output_t in the dmx_pes_filter_params decides two things: whether output is sent to demux0 or dvr0 (in dmxdev.c:dvb_dmxdev_ts_callback), *and* whether to depacketise TS (in dmxdev.c:dvb_dmxdev_filter_start). As it stands, those two things can't be set independently: output destined for demux0 is depacketised, output for dvr0 isn't. This is what you want for capturing multiple audio streams from the same multiplex simultaneously: open demux0 several times and send depacketised output there. And capturing a single video stream is fine not what you want: you want multi-open (so demux0, not dvr0), but you want the TS nature preserved (because that's what you want on output, as you're going to re-multiplex it with the audio). At least one existing solution -- GStreamer -- sends all its streams simultaneously via dvr0 and demuxes again in userland, but it seems a bit of a shame to pick out all the PIDs in kernel, stick them back together in kernel, and send them to userland only to get unpicked again, when the alternative is such a small API addition. The attached patch adds a new value for dmx_output_t: DMX_OUT_TSDEMUX_TAP, which sends TS to the demux0 device. With this patch and a dvb-usb-dib0700 (and UK Freeview from Sandy Heath), I can successfully capture an audio/video PID pair into a TS file that mplayer can play back. Signed-off-by: Peter Hartley <pdh@utter.chaos.org.uk> Acked-by: Andreas Oberritter <obi@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-04Subject: Add a missing include at v4l2_driver.hMauro Carvalho Chehab
From: Carl Karsten <carl@personnelware.com> Date: Thu, 28 Feb 2008 15:21:51 -0600 Adding #include <stddef.h> solves a build problem I had on Ubnutu. v4l-dvb/v4l2-apps/test$ make CC driver-test.o In file included from driver-test.c:17: ../lib/v4l2_driver.h:26: error: expected specifier-qualifier-list before 'size_t' make: *** [driver-test.o] Error 1 Thanks to Carl Karsten <carl@personnelware.com> for pointing this issue. CC: Carl Karsten <carl@personnelware.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-04em28xx: correct use of and fixMauro Carvalho Chehab
From: Andrew Morton <akpm@linux-foundation.org> be less silly while we're there. Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-03-04merge: http://linuxtv.org/hg/~mkrufky/fusionhdtv7Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-26ivtv: Add missing sg_init_table()Hans Verkuil
From: Ian Armstrong <ian@iarmst.demon.co.uk> If a dma transfer is attempted for either yuv or framebuffer output, a missing sg_init_table() call causes a kernel BUG in scatterlist.h if CONFIG_DEBUG_SG is set. Signed-off-by: Ian Armstrong <ian@iarmst.demon.co.uk> Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl>
2008-02-25cx88: enable IR receiver and real time clock on FusionHDTV7 GoldMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-25cx88: fix GPIO for FusionHDTV 7 Gold input selectionMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Fix GPIO for FusionHDTV 7 Gold tv / s-video / composite input selection. Fix card textual name to match other FusionHDTV device names. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-25cx88: add analog support for DVICO FusionHDTV7 GoldMichael Krufky
From: Steven Toth <stoth@hauppauge.com> Signed-off-by: Steven Toth <stoth@hauppauge.com> Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-25limit stack usage of ir-kbd-i2c.cMauro Carvalho Chehab
From: Marcin Slusarz <marcin.slusarz@gmail.com> ir_probe allocated struct i2c_client on stack; it's pretty big structure, so allocate it with kzalloc make checkstack output without this patch: x059d ir_probe [ir-kbd-i2c]: 1000 Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-26 em28xx: Correct use of ! and &Mauro Carvalho Chehab
From: Julia Lawall <julia@diku.dk> In commit e6bafba5b4765a5a252f1b8d31cbf6d2459da337, a bug was fixed that involved converting !x & y to !(x & y). The code below shows the same pattern, and thus should perhaps be fixed in the same way. This is not tested and clearly changes the semantics, so it is only something to consider. The semantic patch that makes this change is as follows: (http://www.emn.fr/x-info/coccinelle/) // <smpl> @@ expression E1,E2; @@ ( !E1 & !E2 | - !E1 & E2 + !(E1 & E2) ) // </smpl> Signed-off-by: Julia Lawall <julia@diku.dk> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-27merge: http://linuxtv.org/hg/~dougsland/v4l-dma/Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-27merge: http://ifup.org/hg/v4l-dvbMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-27merge: http://www.linuxtv.org/hg/~hverkuil/v4l-dvbMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-26v4l: Deadlock in videobuf-core for DQBUF waiting on QBUFBrandon Philips
Avoid a deadlock where DQBUF is holding the vb_lock while waiting on a QBUF which also needs the vb_lock. Reported by Hans Verkuil <hverkuil@xs4all.nl>. From: Brandon Philips <brandon@ifup.org> Signed-off-by: Brandon Philips <bphilips@suse.de>
2008-02-27videobuf-dma-sg: Remove unused variableDouglas Schilling Landgraf
From: Douglas Schilling Landgraf <dougsland@gmail.com> Removed warning message: - videobuf-dma-sg.c: In function 'videobuf_dma_unmap': - videobuf-dma-sg.c:281: warning: unused variable 'dev' Signed-off-by: Douglas Schilling Landgraf <dougsland@gmail.com>
2008-02-27 bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls.Mauro Carvalho Chehab
From: Robert Fitzsimons <robfitz@273k.net> Signed-off-by: Robert Fitzsimons <robfitz@273k.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-27 bttv: Re-enabling radio support requires the use of struct bttv_fh.Mauro Carvalho Chehab
From: Robert Fitzsimons <robfitz@273k.net> A number of the radio tuner ioctl functions are shared with the TV tuner, these functions require a struct bttv_fh data structure to be allocated and initialized. Signed-off-by: Robert Fitzsimons <robfitz@273k.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25 soc-camera: deactivate cameras when not usedMauro Carvalho Chehab
From: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de> Only attach cameras to the host interface for probing, then detach until open. This allows platforms with several cameras on an interface, physically supporting only one camera, to handle multiple cameras and activate them selectively after initial probing. The first attach during probe is needed to activate the host interface to be able to physically communicate with cameras. Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@pengutronix.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25 fix integer as NULL pointer warning in mt20xx.cMauro Carvalho Chehab
From: Harvey Harrison <harvey.harrison@gmail.com> drivers/media/video/mt20xx.c:650:10: warning: Using plain integer as NULL pointer Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25 dabusb: fix shadowed variable warning in dabusb.cMauro Carvalho Chehab
From: Harvey Harrison <harvey.harrison@gmail.com> drivers/media/video/dabusb.c:208:6: warning: symbol 'buffers' shadows an earlier one drivers/media/video/dabusb.c:63:12: originally declared here Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25cx88-cards: Fix powerangel gpio1Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> With this gpio, audio works properly. Thanks to Daniel Fraga <fragabr@gmail.com> for helping on fixing the code for Powerangel Real board. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25cx88-dvb: Renames pci_nano callbackMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> This callback is specific to pci_nano, since supports only dvb. Renames it to avoid future mistakes. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-25 suppress compound statement warning in dvb-bt8xx.cMauro Carvalho Chehab
From: Harvey Harrison <harvey.harrison@gmail.com> Prevailing kernel style seems to prefer always using braces for do {} while (). Add braces to dprintk to suppress the sparse warnings: drivers/media/dvb/bt8xx/dvb-bt8xx.c:73:2: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:93:2: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:529:2: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:614:4: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:629:4: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:639:4: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:883:2: warning: do-while statement is not a compound statement drivers/media/dvb/bt8xx/dvb-bt8xx.c:917:2: warning: do-while statement is not a compound statement Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-24pvrusb2: set default video standard to NTSC for OnAir HDTV / CreatorMichael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> The pvrusb2 driver normally picks up the default video standard from the eeprom on Hauppauge devices, but the OnAir HDTV and OnAir Creator are not Hauppauge devices, and do not store this information in any eeprom. These devices support NTSC/ATSC, so we should use NTSC by default when in analog mode. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-03-02pvrusb2: Fix storage-class as per C99 specMike Isely
From: Tobias Klauser <tklauser@distanz.ch> The C99 specification states in section 6.11.5: The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature. Signed-off-by: Tobias Klauser <tklauser@distanz.ch> Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-23 V4L: Storage class should be before const qualifierMauro Carvalho Chehab
From: Tobias Klauser <tklauser@distanz.ch> The C99 specification states in section 6.11.5: The placement of a storage-class specifier other than at the beginning of the declaration specifiers in a declaration is an obsolescent feature. Signed-off-by: Tobias Klauser <tklauser@distanz.ch> CC: Luca Risolia <luca.risolia@studio.unibo.it> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-19cx88: Powercolor Angel works only with firmware version 2.5Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-cards.c | 4 ++++ 1 file changed, 4 insertions(+)
2008-02-19saa7134: fix: tuner should be loaded before calling saa7134_board_init2()Mauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> There are several parts of saa7134_board_init2() that calls tuner modules. We should first load tuner, otherwise, the commands will fail. Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
2008-02-19cx88: Fix: Loads tuner module before sending commands to itMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-cards.c | 5 +++++ linux/drivers/media/video/cx88/cx88-video.c | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-)
2008-02-19cx88-dvb: convert attach_xc3028 into a functionMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-dvb.c | 58 ++++++++++++++++-------------- 1 file changed, 31 insertions(+), 27 deletions(-)
2008-02-19cx88: prints an info when xc2028 is set or is attachedMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-cards.c | 3 ++- linux/drivers/media/video/cx88/cx88-dvb.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-)
2008-02-19cx88-cards: always use a level on printk messagesMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-cards.c | 71 ++++++++++++++++------------ 1 file changed, 41 insertions(+), 30 deletions(-)
2008-02-19Some cleanups at cx88 callback methodsMauro Carvalho Chehab
From: Mauro Carvalho Chehab <mchehab@infradead.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org> --- linux/drivers/media/video/cx88/cx88-cards.c | 57 +++++++++------------------- 1 file changed, 19 insertions(+), 38 deletions(-)
2008-02-10tuner-simple: enable digital tuning support for Thomson FE6600Michael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Enable digital tuning support within tuner-simple. This will allow for a single tuner module to manage the hardware, without having dvb-pll loaded. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-10tuner-simple: enable digital tuning support for Philips TD1316Michael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Enable digital tuning support within tuner-simple. This will allow for a single tuner module to manage the hardware, without having dvb-pll loaded. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-10tuner-simple: enable digital tuning support for Microtune 4042 FI5Michael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Enable digital tuning support within tuner-simple. This will allow for a single tuner module to manage the hardware, without having dvb-pll loaded. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-10tuner-simple: enable digital tuning support for Thomson DTT 7610Michael Krufky
From: Michael Krufky <mkrufky@linuxtv.org> Enable digital tuning support within tuner-simple. This will allow for a single tuner module to manage the hardware, without having dvb-pll loaded. Signed-off-by: Michael Krufky <mkrufky@linuxtv.org>
2008-02-09pvrusb2: Rework context handling and initializationMike Isely
From: Mike Isely <isely@pobox.com> This change significantly rearranges pvr2_context level initialization and operation: 1. A new kernel thread is set up for management of the context. 2. Destruction of the pvr2_context instance is moved into the kernel thread. No other context is able to remove the instance; doing this simplifies lock handling. 3. The callback into pvrusb2-main, which is used to trigger initialization of each interface, is now issued from this kernel thread. Previously it had been indirectly issued out of the work queue thread in pvr2_hdw, which led to deadlock issues if the interface needed to change a control setting (which in turn requires dispatch of another work queue entry). 4. Callbacks into the interfaces (via the pvr2_channel structure) are now issued strictly from this thread. The net result of this is that such callback functions can now also safely operate driver controls without deadlocking the work queue. (At the moment this is not actually a problem, but I'm anticipating issues with this in the future). 5. There is no longer any need for anyone to enter / exit the pvr2_context structure. Implementation of the kernel thread here allows this all to be internal now, simplifying other logic. 6. A very very longstanding issue involving a mutex deadlock between the pvrusb2 driver and v4l should now be solved. The deadlock involved the pvr2_context mutex and a globals-protecting mutex in v4l. During initialization the driver would take the pvr2_context mutex first then the v4l2 interface would register with v4l and implicitly take the v4l mutex. Later when v4l would call back into the driver, the two mutexes could possibly be taken in the opposite order, a situation that can lead to deadlock. In practice this really wasn't an issue unless a v4l app tried to start VERY early after the driver appeared. However it still needed to be solved, and with the use of the kernel thread relieving need for pvr2_context mutex, the problem should be finally solved. Signed-off-by: Mike Isely <isely@pobox.com>
2008-02-09pvrusb2: Eliminate timer race during tear-downMike Isely
From: Mike Isely <isely@pobox.com> The pvrusb2 tear-down logic was clearing two timers before stopping its internal work queue. That left a tiny window open where the work queue might run after the timers are stopped, possibly starting them again. This could lead to dangling pointers and an oops. Solution: Kill the work queue first, then delete the timers. Signed-off-by: Mike Isely <isely@pobox.com>