summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ARM] S3C24XX: Move headers from plat-s3c24xx to plat-s3cBen Dooks2008-12-153-4/+3
| | | | | | | Move clock.h, cpu.h and devs.h to plat-s3c for use with the s3c64xx support. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Update clock data on resumeBen Dooks2008-12-157-36/+104
| | | | | | | | | Update the clock settings on resume for suspend/resume support so that if the boot loader changes anything or the system's PLL is reset then we return with the correct settings. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Change clock locking to use spinlocks.Ben Dooks2008-12-153-18/+23
| | | | | | | | We cannot sleep if we have cpufreq pm enabled during some of the clock operations, so change to use a spinlock to protect the clock system. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] CPUFREQ: S3C24XX serial CPU frequency scaling support.Ben Dooks2008-12-152-0/+102
| | | | | | | Add support for CPU frequency scalling to the S3C24XX serial driver. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Split pll code out of regs-clock.hBen Dooks2008-12-157-41/+49
| | | | | | | | | | | | Move the PLL calculation code into it's own header file for re-use with the other plat-s3c24xx based systems such as the S3C24A0. Note, we change the name of s3c2410_get_pll to the more generically named s3c24xx_get_pll as well as the related defintions. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Split DCLK/CLKOUT definitions out of clock.cBen Dooks2008-12-156-171/+204
| | | | | | | | | Only certain boards need these clocks, and they are not available on some CPUs (such as the S3C24A0) so remove them from arch/arm/plat-s3c24xx/clock.c and into their own file with appropriate Kconfig entries. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Move initialisation code to arch/arm/plat-s3cBen Dooks2008-12-1513-155/+201
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We need to add plat-s3c to the build to get the headers that will go in here once moved from include/asm-arm so we may as well put some useful common s3c code in here to stop the errors generated form having nothing built. The cpu setup is now passed the cpu idcode and the table of supported cpus to s3c_init_cpu() to abstract the cpu identification out of the initial io setup. As well as moving the cpu initialisation code, we move the map of the board specific items up to the calling code as none of the map_io() functions actually do anything other than pass this to iotable_init(). This patch does not rename any of the init functions that will be common to s3c24xx and any other s3c architectures as this can be done at a later date as it will touch all the board support files which use functions such as s3c24xx_init_clocks() and s3c24xx_init_uarts(). Note, the header arch/arm/plat-s3c24xx/include/plat/cpu.h still has functions that are used by both the cpu and board initialisation functions. This means that each board has definitions specific to the cpu support included and the vice-versa. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Add default <mach/io.h> headerBen Dooks2008-12-151-0/+18
| | | | | | | | Add a default header for <mach/io.h> for systems such as the S3C24A0 which do not need any of the complex code that the S3C2410 uses. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Move vmalloc.h to plat-s3cBen Dooks2008-12-151-1/+1
| | | | | | | | vmalloc.h is common across all the current s3c platforms, so move it to arch/arm/plat-s3c/include/mach to be used for all the targets. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C: Make <mach/timex.h> commonBen Dooks2008-12-151-0/+0
| | | | | | | Move <mach/timex.h> to arch/arm/plat-s3c/include/mach/timex.h so it can be the default for all S3C based architectures. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C2410: Move base clock code to plat-s3c24xxBen Dooks2008-12-155-6/+9
| | | | | | | | Move the S3C2410 base clock list to arch/arm/plat-s3c24xx as this code is common to the S3C2410, S3C2440 and S3C2442 cpus. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C: Add <plat/cpu-freq.h> for initial cpufreq definitionsBen Dooks2008-12-151-0/+94
| | | | | | | This is the header file that defines the basic cpu frequency scalling support for the Samsung S3C series of SoC. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] S3C24XX: Default SPI pin configuration for SPIBen Dooks2008-12-155-0/+105
| | | | | | | | Add a set of default pin configuration routines for setting up the SPI gpio configuration when using the hardware SPI driver. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* Merge git://git.marvell.com/orion into develRussell King2008-12-13294-2409/+5979
|\
| * [ARM] Kirkwood: update defconfigNicolas Pitre2008-12-111-90/+239
| | | | | | | | Signed-off-by: Nicolas Pitre <nico@marvell.com>
| * [ARM] Feroceon: pass proper -mtune argument to gccNicolas Pitre2008-12-111-0/+1
| | | | | | | | | | | | | | | | Compilation for the Feroceon core should use -mtune=marvell-f. This is available in Code Sourcery's 2008Q3 release at the moment. Otherwise fall back to -mtune-=xscale. Signed-off-by: Nicolas Pitre <nico@marvell.com>
| * [ARM] Kirkwood: properly handle the WAN port on newer RD88F6281 boardsRonen Shitrit2008-12-111-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | On newer versions of the RD88F6281 board, the WAN port is connected to its own ethernet port on the CPU, via a separate PHY, whereas on older versions of the board, it is connected to one of the PHYs in the ethernet switch. In the RD8F6281 setup code, detect which version of the board we are running on, and instantiate the ethernet ports and switch driver accordingly. Signed-off-by: Ronen Shitrit <rshitrit@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: Nicolas Pitre <nico@marvell.com>
| * [ARM] Kirkwood: allow instantiating the second ethernet portRonen Shitrit2008-12-113-0/+60
| | | | | | | | | | | | | | | | | | | | The 88f6192 and 88f6281 Kirkwood SoCs support two ethernet ports. Add the platform glue that will allow board support files to instantiate the second ethernet port. Signed-off-by: Ronen Shitrit <rshitrit@marvell.com> Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: Nicolas Pitre <nico@marvell.com>
| * [ARM] DNS323: Initialise 88F5182 correctlyMatt Palmer2008-12-111-4/+61
| | | | | | | | | | | | | | | | | | | | The 88F5182 found in the DNS-323 rev B1 (and some other devices, such as the CH3SNAS) require different initialisation of the SATA controller and MPP registers. Tested on a DNS-323 rev B1. Signed-off-by: Matt Palmer <mpalmer@hezmatt.org>
| * [ARM] DNS323: Read MAC address from flashMatt Palmer2008-12-111-16/+95
| | | | | | | | | | | | | | | | | | Based on similar code from the tsx09 series of machines, just rips the MAC address out of flash and stuffs it into the NIC. Tested on a DNS323 rev B1. It's possible (though unlikely) that an A1 will have the MAC in a different location in flash. Signed-off-by: Matt Palmer <mpalmer@hezmatt.org>
| * [ARM] Orion: add the option to support different ehci phy initializationRonen Shitrit2008-12-045-3/+25
| | | | | | | | | | | | | | | | | | The Orion ehci driver serves the Orion, kirkwood and DD Soc families. Since each of those integrate a different USB phy we should have the ability to use few initialization sequences or to leave the boot loader phy settings as is. Signed-off-by: Ronen Shitrit <rshitrit@marvell.com>
| * Linux 2.6.28-rc7v2.6.28-rc7Linus Torvalds2008-12-021-2/+2
| |
| * Merge branch 'for_linus' of ↵Linus Torvalds2008-12-0226-149/+410
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: (25 commits) em28xx: remove backward compat macro added on a previous fix V4L/DVB (9748): em28xx: fix compile warning V4L/DVB (9743): em28xx: fix oops audio V4L/DVB (9742): em28xx-alsa: implement another locking schema V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStick V4L/DVB (9691): gspca: Move the video device to a separate area. V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put. V4L/DVB (9689): gspca: Memory leak when disconnect while streaming. V4L/DVB (9668): em28xx: fix a race condition with hald V4L/DVB (9664): af9015: don't reconnect device in USB-bus V4L/DVB (9647): em28xx: void having two concurrent control URB's V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urb V4L/DVB (9645): em28xx: Avoid memory leaks if registration fails V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20 V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endian V4L/DVB (9634): Make sure the i2c gate is open before powering down tuner V4L/DVB (9632): make em28xx aux audio input work V4L/DVB (9631): Make s2api work for ATSC support V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eeprom V4L/DVB (9608): Fix section mismatch warning for dm1105 during make ...
| | * em28xx: remove backward compat macro added on a previous fixMauro Carvalho Chehab2008-12-011-12/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | commit 50f3beb50abe0cc0228363af804e50e710b3e5b0 fixed em28xx-alsa locking schema. However, a backport macro was kept. This patch removes the macro, since it is not needed for the module compilation against upstream. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9748): em28xx: fix compile warningHans Verkuil2008-12-011-2/+0
| | | | | | | | | | | | | | | | | | | | | Label fail_unreg is no longer used. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9743): em28xx: fix oops audioDouglas Schilling Landgraf2008-12-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replaced usb_kill_usb for usb_unlink_usb (wait until urb to fully stop require USB core to put the calling process to sleep). Oops: http://www.kerneloops.org/raw.php?rawid=71799&msgid= Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9742): em28xx-alsa: implement another locking schemaMauro Carvalho Chehab2008-11-241-13/+24
| | | | | | | | | | | | | | | | | | | | | Instead of using a spinlock, it is better to call the proper pcm stream locking schema. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9732): sms1xxx: use new firmware for Hauppauge WinTV MiniStickMichael Krufky2008-11-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | New firmware image brings enhanced tuning performance. Firmware is available for download at the following location: http://www.steventoth.net/linux/sms1xxx Signed-off-by: Michael Krufky <mkrufky@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9691): gspca: Move the video device to a separate area.Jean-Francois Moine2008-11-242-16/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The video device was part of the gspca device. On device disconnection while streaming, the device structure is freed at close time. In this case, the remaining close job on the video device run out of allocated memory. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9690): gspca: Lock the subdrivers via module_get/put.Jean-Francois Moine2008-11-242-4/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous subdriver protection against rmmod was done via the file operations table in the device descriptor. On device disconnection while streaming, the device structure was freed at close time, and the module_put still used the module name in the freed area. Now, explicit module get/put are done on open and close. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9689): gspca: Memory leak when disconnect while streaming.Jean-Francois Moine2008-11-2410-10/+39
| | | | | | | | | | | | | | | | | | | | | | | | As a side effect, the sd routine stop0 is called on disconnect. This permits the subdriver to free its resources. Signed-off-by: Jean-Francois Moine <moinejf@free.fr> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9668): em28xx: fix a race condition with haldMauro Carvalho Chehab2008-11-201-53/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Newer versions of hald tries to open it to call QUERYCAP. Due to the lack of a proper locking, it is possible to open the device before it finishes initialization. This patch adds a lock to avoid this risk, and to protect the list of em28xx devices. While here, remove the uneeded BKL lock. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9664): af9015: don't reconnect device in USB-busJose Alberto Reguero2008-11-201-6/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Don't reconnect device in the USB-bus. Reconnect command was not executed every time by device firmware and that causes harm. Reconnection is not needed so remove it. Signed-off-by: Jose Alberto Reguero <jareguero@telefonica.net> Signed-off-by: Antti Palosaari <crope@iki.fi> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9647): em28xx: void having two concurrent control URB'sMauro Carvalho Chehab2008-11-203-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Now that we have a polling task for IR, there's a race condition, since IR can be polling while other operations are being doing. Also, we are now sharing the same urb_buf for both read and write control urb operations. So, we need a mutex. Thanks to Davin Heitmueller <devin.heitmueller@gmail.com> for warning me. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9646): em28xx: avoid allocating/dealocating memory on every control urbMauro Carvalho Chehab2008-11-202-22/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this patch, every register setup on em28xx were dynamically allocating a temporary buffer for control URB's to be handled. To avoid this ping-pong, use, instead a pre-allocated buffer. Also, be sure that read control URB's also use the buffer, instead of relying on a stack buffer. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9645): em28xx: Avoid memory leaks if registration failsMauro Carvalho Chehab2008-11-201-4/+5
| | | | | | | | | | | | | | | | | | | | | em28xx_init_dev() has some error conditions that are not properly de-allocating dev var, nor freeing the device number for a future usage. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9639): Make dib0700 remote control support work with firmware v1.20Devin Heitmueller2008-11-173-2/+158
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The format for reading the IR controller changed in firmware 1.20. It now provides the events on bulk endpoint 1 instead of using a control request. Support the new format, providing backward compatibility for users who might be using older firmware. Thanks to Patrick Boettcher <patrick.boettcher@desy.de> for providing the required information on how the version 1.20 firmware works. Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9635): v4l: s2255drv fix firmware test on big-endianHarvey Harrison2008-11-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Noticed by sparse: drivers/media/video/s2255drv.c:2531:6: warning: restricted __le32 degrades to integer Cc: Dean Anderson <dean@sensoray.com> Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9634): Make sure the i2c gate is open before powering down tunerDevin Heitmueller2008-11-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It is not safe to assume that the i2c gate will be open before issuing the command to power down the tuner. In fact, many demods only open the gate long enough to issue the tuning command. This fix allows power management to work properly for those tuners behind an i2c gate (in my case the problem was with the HVR-950Q) Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9632): make em28xx aux audio input workDevin Heitmueller2008-11-171-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The attached patch makes the em28xx auxillary audio input work. Tested with the HVR-950. em28xx: make auxillary audio input work The tuner audio input was working but the aux input wasn't. Tested with the HVR-950. Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9631): Make s2api work for ATSC supportDevin Heitmueller2008-11-171-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | ATSC should be considered a legacy delivery system, or else fields such as p->u.vsb.modulation do not get populated (resulting in set_frontend failures) Cc: Steven Toth <stoth@linuxtv.org> Signed-off-by: Devin Heitmueller <devin.heitmueller@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9627): em28xx: Avoid i2c register error for boards without eepromMauro Carvalho Chehab2008-11-171-4/+6
| | | | | | | | | | | | Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9608): Fix section mismatch warning for dm1105 during makeIgor M. Liplianin2008-11-171-1/+1
| | | | | | | | | | | | | | | | | | | | | -- Signed-off-by: Igor M. Liplianin <liplianin@me.by> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9605): usb-urb: fix memory leakDouglas Schilling Landgraf2008-11-171-5/+14
| | | | | | | | | | | | | | | | | | | | | Free allocated memory Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9604): ttusb_dec: fix memory leakDouglas Schilling Landgraf2008-11-171-0/+1
| | | | | | | | | | | | | | | | | | | | | Free allocated memory Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9603): dvb-ttusb-budget: Add validation for ttusb_alloc_iso_urbsDouglas Schilling Landgraf2008-11-171-1/+8
| | | | | | | | | | | | | | | | | | | | | Added validation for ttusb_alloc_iso_urbs Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9602): dvb-ttusb-budget: Add NULL pointer validationDouglas Schilling Landgraf2008-11-171-0/+6
| | | | | | | | | | | | | | | | | | | | | Added validation for NULL pointer Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| | * V4L/DVB (9601): ttusb_dec: Add NULL pointer validationDouglas Schilling Landgraf2008-11-171-0/+6
| | | | | | | | | | | | | | | | | | | | | Added validation for NULL pointer Signed-off-by: Douglas Schilling Landgraf <dougsland@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * | drivers/gpu/drm/i915/i915_irq.c: fix warningAndrew Morton2008-12-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | drivers/gpu/drm/i915/i915_irq.c: In function 'i915_disable_pipestat': drivers/gpu/drm/i915/i915_irq.c:101: warning: control may reach end of non-void function 'i915_pipestat' being inlined Cc: Dave Airlie <airlied@linux.ie> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
| * | i82875p_edac: fix module removeJarkko Lavinen2008-12-021-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix module removal bugs of i82875p_edac. Also i82975x_edac code seems to have the same module removal bugs as in i82875p_edac. The problems were: 1. In module removal i82875p_remove_one() is never called. Variable i82875p_registered is newer changed from 1, which guarantees i82875p_remove_one() is not called (and even if it were called, it would be called in wrong order). As a result, the edac_mc workque is not stopped and keeps probing. If kernel debugging options are not enabled, user may not notice anything going wrong. if debugging options are enabled and I do "rmmod i82875p_edac", I get: edac debug: edac_pci_workq_function() checking BUG: unable to handle kernel paging request at f882d16f ... call trace: [<f8834df3>] ? edac_mc_workq_function+0x55/0x7e [edac_core] [<c0233974>] ? run_workqueue+0xd7/0x1a5 [<c023392f>] ? run_workqueue+0x92/0x1a5 [<f8834d9e>] ? edac_mc_workq_function+0x0/0x7e [edac_core] [<c0233af9>] ? worker_thread+0xb7/0xc3 [<c0236a7b>] ? autoremove_wake_function+0x0/0x33 [<c0233a42>] ? worker_thread+0x0/0xc3 [<c0236809>] ? kthread+0x3b/0x61 [<c02367ce>] ? kthread+0x0/0x61 [<c0204587>] ? kernel_thread_helper+0x7/0x10 Fix for this is to get rid of needles variable i82875p_registered altogether and run i82875p_remove_one() *before* pci_unregister_driver(). 2. edac_mc_del_mc() uses mci after freeing mci edac_mc_del_mc() calls calls edac_remove_sysfs_mci_device(). The kobject refcount of mci drops to 0 and mci is freed. After this mci is accessed via debug print and i82875p_remove_one() still uses mci->pvt and tries to free mci again with edac_mc_free(). The fix for this is add kobject_get(&mci->edac_mci_kobj) after edac_mc_alloc(). Then the mci is still available after returning from edac_mc_del_mc() with refcount 1, and mci->pvt is still available. When i82875p_remove_one() finally calls edac_mc_free(), this will cause kobject_put() and mci is released properly. Signed-off-by: Jarkko Lavinen <jlavi@iki.fi> Cc: Doug Thompson <norsk5@yahoo.com> Cc: Alan Cox <alan@lxorguk.ukuu.org.uk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>