summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* iio:ad7476: Report scale as fractional valueLars-Peter Clausen2013-10-011-4/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad7266: Report scale as fractional valueLars-Peter Clausen2013-10-011-11/+10
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:mcp4725: Report scale as fractional valueLars-Peter Clausen2013-10-011-5/+3
| | | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Cc: Peter Meerwald <pmeerw@pmeerw.net> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:max517: Report scale as fractional valueLars-Peter Clausen2013-10-011-5/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5791: Report scale as fractional valueLars-Peter Clausen2013-10-011-3/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5764: Report scale as fractional valueLars-Peter Clausen2013-10-011-6/+4
| | | | | | | | | Move the complexity of calculating the fixed point scale to the core. Also fix a off by one error in the comment describing the transfer function. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5755: Report scale as fractional valueLars-Peter Clausen2013-10-011-12/+5
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5686: Report scale as fractional valueLars-Peter Clausen2013-10-011-7/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5624r: Report scale as fractional valueLars-Peter Clausen2013-10-011-6/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5504: Report scale as fractional valueLars-Peter Clausen2013-10-011-6/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5446: Report scale as fractional valueLars-Peter Clausen2013-10-011-6/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5421: Report scale as fractional valueLars-Peter Clausen2013-10-011-11/+5
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5380: Report scale as fractional valueLars-Peter Clausen2013-10-011-21/+19
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5360: Report scale as fractional valueLars-Peter Clausen2013-10-011-6/+5
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* iio:ad5064: Report scale as fractional valueLars-Peter Clausen2013-10-011-4/+3
| | | | | | | Move the complexity of calculating the fixed point scale to the core. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* IIO: call sensor hub open close functionSrinivas Pandruvada2013-10-011-0/+6
| | | | | | | | | Call hid_sensor_hub_device_open when user space opens device and call hid_sensor_hub_device_close when device is closed. This helps in saving power. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* HID: Delay opening HID deviceSrinivas Pandruvada2013-10-012-10/+53
| | | | | | | | | | Don't call hid_open_device till there is actually an user. This saves power by not opening underlying transport for HID. Also close device if there are no active mfd client using HID sensor hub. Signed-off-by: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
* staging: lustre: fix bug with LL_MRF_RETURN in loop_make_requestGreg Kroah-Hartman2013-09-302-4/+1
| | | | | | | | | | | | | | Turns out that LL_MRF_RETURN is "void" so loop_make_request() would fall through to the error path for a successful call. Either this never matters, or the error path really doesn't do anything. Fix it up to do what the code is written to look like it is doing, if that really is what it should be doing is another story... Cc: Peng Tao <tao.peng@emc.com> Cc: Zhao Hongjiang <zhaohongjiang@huawei.com> Cc: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: lustre: remove ll_mrf_retGreg Kroah-Hartman2013-09-302-3/+1
| | | | | | | | | | It's just 'void' and only used in one place, so just remove it, it's useless. Cc: Peng Tao <tao.peng@emc.com> Cc: Zhao Hongjiang <zhaohongjiang@huawei.com> Cc: Andreas Dilger <andreas.dilger@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: linux.c: Return negative error codesSachin Kamat2013-09-301-1/+1
| | | | | | | | Return negative error codes as is followed in the rest of the kernel. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: hwprobe.c: Return negative error codesSachin Kamat2013-09-301-5/+5
| | | | | | | | Return negative error codes as is followed in the rest of the kernel. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: musycc.c: Return negative error codesSachin Kamat2013-09-301-2/+2
| | | | | | | | Return negative error codes as is followed in the rest of the kernel. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: pmcc4_drv.c: Use NULL instead of 0Sachin Kamat2013-09-301-8/+8
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: sbecrc.c: Use NULL instead of 0Sachin Kamat2013-09-301-2/+2
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: hwprobe.c: Use NULL instead of 0Sachin Kamat2013-09-301-2/+2
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: sbeproc.c: Use NULL instead of 0Sachin Kamat2013-09-301-1/+1
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: linux.c: Use NULL instead of 0Sachin Kamat2013-09-301-13/+13
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: sbeid.c: Use NULL instead of 0Sachin Kamat2013-09-301-1/+1
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: sbecom_inline_linux.h: Return NULL instead of 0Sachin Kamat2013-09-301-2/+2
| | | | | | | Functions returning pointer should return NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: cxt1e1: musycc.c: Use NULL instead of 0Sachin Kamat2013-09-301-14/+14
| | | | | | | Pointers should be assigned NULL instead of 0. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: dgnc: Remove KERNEL_VERSION checkSachin Kamat2013-09-301-5/+0
| | | | | | | | This check is not required. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Acked-by: Lidza Louina <lidza.louina@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: imx-drm: Remove redundant of_match_ptrSachin Kamat2013-09-301-2/+1
| | | | | | | | 'imx_ldb_dt_ids' is always compiled in. Hence of_match_ptr() is not needed. Signed-off-by: Sachin Kamat <sachin.kamat@linaro.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Staging: sm7xxfb: fixed line break coding style issuesMartin Berglund2013-09-301-7/+5
| | | | | | | Fixed coding style issues. Signed-off-by: Martin Berglund <martin@rogsta.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging/olpc: fix dependencies to fix build errorsRandy Dunlap2013-09-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix build errors when GPIO_CS5535=m and FB_OLPC_DCON=y by preventing that kconfig combination. These build errors are caused by having a kconfig bool symbol (FB_OLPC_DCON_1) that depend on a tristate symbol (GPIO_CS5535), but when the tristate symbol is =m, the bool symbol is =y. drivers/built-in.o: In function `dcon_read_status_xo_1': olpc_dcon_xo_1.c:(.text+0x359531): undefined reference to `cs5535_gpio_set' drivers/built-in.o: In function `dcon_wiggle_xo_1': olpc_dcon_xo_1.c:(.text+0x35959f): undefined reference to `cs5535_gpio_set' olpc_dcon_xo_1.c:(.text+0x359610): undefined reference to `cs5535_gpio_clear' drivers/built-in.o:olpc_dcon_xo_1.c:(.text+0x3596a1): more undefined references to `cs5535_gpio_clear' follow drivers/built-in.o: In function `dcon_wiggle_xo_1': olpc_dcon_xo_1.c:(.text+0x359708): undefined reference to `cs5535_gpio_set' drivers/built-in.o: In function `dcon_init_xo_1': olpc_dcon_xo_1.c:(.text+0x35989b): undefined reference to `cs5535_gpio_clear' olpc_dcon_xo_1.c:(.text+0x3598b5): undefined reference to `cs5535_gpio_isset' olpc_dcon_xo_1.c:(.text+0x359963): undefined reference to `cs5535_gpio_setup_event' olpc_dcon_xo_1.c:(.text+0x359980): undefined reference to `cs5535_gpio_set_irq' olpc_dcon_xo_1.c:(.text+0x359a36): undefined reference to `cs5535_gpio_set' Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Cc: Daniel Drake <dsd@laptop.org> Cc: Jens Frederich <jfrederich@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: rtl8712: remove unneeded NULL checkDan Carpenter2013-09-301-5/+3
| | | | | | | | | We knew "peventbuf" was a valid pointer and "peventbuf + 2" is also non-NULL. I have removed the check. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Acked-by: Larry Finger <Larry.Finger@lwfinger.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Staging: rtl8187se: fixed coding style issuesAdam Rall2013-09-301-41/+39
| | | | | | | Fixed checkpatch.pl errors in r8180_dm.c. Signed-off-by: Adam Rall <adam.rall4@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: vt6655: don't leak when returning -EOPNOTSUPP in vt6655_hostap_ioctlJesper Juhl2013-09-301-15/+10
| | | | | | | | Make sure we always free(param); and remove a redundant "goto out;" just before we'll hit the label anyway. Signed-off-by: Jesper Juhl <jj@chaosbits.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Staging: vt6655: 80211mgr: Cleanup of brace coding style issuesMartin Berglund2013-09-301-10/+6
| | | | | | | Cleanup of a few brace coding style issues. Signed-off-by: Martin Berglund <martin@rogsta.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: vt6656: covert RXvMngWorkItem to work queueMalcolm Priestley2013-09-304-6/+9
| | | | | | | | | | Tasklet to workqueue. RxMngWorkItem -> rx_mng_work_item Reduce atomic area of driver and dependency on system timer. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: vt6656: convert RXvWorkItem to work queueMalcolm Priestley2013-09-304-7/+11
| | | | | | | | | | Tasklet to workqueue. ReadWorkItem -> read_work_item Reduce atomic area of driver. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: vt6656: covert BSSvSecondCallBack to delayed_work.Malcolm Priestley2013-09-307-17/+14
| | | | | | | | | | | | | | | timer to delay workqueue. sTimerSecondCallback -> second_callback_work The delayed work queue is declared in device.h This timer is very heavy on the system. Improves over performance of driver and reduce the atomic area of driver. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: vt6656: device.h convert sTimerCommand to delayed_workMalcolm Priestley2013-09-305-37/+16
| | | | | | | | | | | | | timer to delay workqueue. sTimerCommand -> run_command_work sTimerCommand is very heavy on the system timer. Improves over performance of driver and reduce the atomic area of driver. Signed-off-by: Malcolm Priestley <tvboxspy@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: lustre: Don't leak 'buffer' in cfs_get_environ()Jesper Juhl2013-09-301-1/+3
| | | | | | | | If 'down_read_trylock' fails we'll curently leak the memory allocated to 'buffer'. Fix the leak by simply kfree'ing 'buffer' before returning '-EDEADLK'. Signed-off-by: Jesper Juhl <jj@chaosbits.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* staging: comedi: ni_at_ao: fix namespace clash of 'RSI' defineH Hartley Sweeten2013-09-301-1/+1
| | | | | | | | | | | | | As pointed out by Fengguang Wu, the RSI define in this driver clashes with the one in arch/x86/include/uapi/asm/ptrace-abi.h. This define isn't currently used by the driver so just rename it to fix the clash. Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com> Reported-by: Fengguang Wu <fengguang.wu@intel.com> Cc: Ian Abbott <abbotti@mev.co.uk> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
* Merge 3.12-rc3 into staging-nextGreg Kroah-Hartman2013-09-29230-1253/+2355
|\ | | | | | | | | | | We want the staging fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| * Linux 3.12-rc3v3.12-rc3Linus Torvalds2013-09-291-1/+1
| |
| * Merge tag 'usb-3.12-rc3' of ↵Linus Torvalds2013-09-2921-107/+201
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb Pull USB fixes from Greg KH: "Here are a number of USB driver fixes for 3.12-rc3. These are all for host controller issues that have been reported, and there's a fix for an annoying error message that gets printed every time you remove a USB 3 device from the system that's been bugging me for a while" * tag 'usb-3.12-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: usb: dwc3: add support for Merrifield USB: fsl/ehci: fix failure of checking PHY_CLK_VALID during reinitialization USB: Fix breakage in ffs_fs_mount() fsl/usb: Resolve PHY_CLK_VLD instability issue for ULPI phy usb/core/devio.c: Don't reject control message to endpoint with wrong direction bit usb: chipidea: USB_CHIPIDEA should depend on HAS_DMA usb: chipidea: udc: free pending TD at removal procedure usb: chipidea: imx: Add usb_phy_shutdown at probe's error path usb: chipidea: Fix memleak for ci->hw_bank.regmap when removal usb: chipidea: udc: fix the oops after rmmod gadget USB: fix PM config symbol in uhci-hcd, ehci-hcd, and xhci-hcd USB: OHCI: accept very late isochronous URBs USB: UHCI: accept very late isochronous URBs USB: iMX21: accept very late isochronous URBs usbcore: check usb device's state before sending a Set SEL control transfer xhci: Fix race between ep halt and URB cancellation usb: Fix xHCI host issues on remote wakeup. xhci: Ensure a command structure points to the correct trb on the command ring xhci: Fix oops happening after address device timeout
| | * usb: dwc3: add support for MerrifieldDavid Cohen2013-09-261-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | Add PCI id for Intel Merrifield Signed-off-by: David Cohen <david.a.cohen@linux.intel.com> Cc: stable <stable@vger.kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | * USB: fsl/ehci: fix failure of checking PHY_CLK_VALID during reinitializationShengzhou Liu2013-09-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In case of usb phy reinitialization: e.g. insmod usb-module(usb works well) -> rmmod usb-module -> insmod usb-module It found the PHY_CLK_VALID bit didn't work if it's not with the power-on reset. So we just check PHY_CLK_VALID bit during the stage with POR, this can be met by the tricky of checking FSL_SOC_USB_PRICTRL register. Signed-off-by: Shengzhou Liu <Shengzhou.Liu@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| | * USB: Fix breakage in ffs_fs_mount()Al Viro2013-09-261-34/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a bunch of failure exits in ffs_fs_mount() with seriously broken recovery logics. Most of that appears to stem from misunderstanding of the ->kill_sb() semantics; unlike ->put_super() it is called for *all* superblocks of given type, no matter how (in)complete the setup had been. ->put_super() is called only if ->s_root is not NULL; any failure prior to setting ->s_root will have the call of ->put_super() skipped. ->kill_sb(), OTOH, awaits every superblock that has come from sget(). Current behaviour of ffs_fs_mount(): We have struct ffs_sb_fill_data data on stack there. We do ffs_dev = functionfs_acquire_dev_callback(dev_name); and store that in data.private_data. Then we call mount_nodev(), passing it ffs_sb_fill() as a callback. That will either fail outright, or manage to call ffs_sb_fill(). There we allocate an instance of struct ffs_data, slap the value of ffs_dev (picked from data.private_data) into ffs->private_data and overwrite data.private_data by storing ffs into an overlapping member (data.ffs_data). Then we store ffs into sb->s_fs_info and attempt to set the rest of the things up (root inode, root dentry, then create /ep0 there). Any of those might fail. Should that happen, we get ffs_fs_kill_sb() called before mount_nodev() returns. If mount_nodev() fails for any reason whatsoever, we proceed to functionfs_release_dev_callback(data.ffs_data); That's broken in a lot of ways. Suppose the thing has failed in allocation of e.g. root inode or dentry. We have functionfs_release_dev_callback(ffs); ffs_data_put(ffs); done by ffs_fs_kill_sb() (ffs accessed via sb->s_fs_info), followed by functionfs_release_dev_callback(ffs); from ffs_fs_mount() (via data.ffs_data). Note that the second functionfs_release_dev_callback() has every chance to be done to freed memory. Suppose we fail *before* root inode allocation. What happens then? ffs_fs_kill_sb() doesn't do anything to ffs (it's either not called at all, or it doesn't have a pointer to ffs stored in sb->s_fs_info). And functionfs_release_dev_callback(data.ffs_data); is called by ffs_fs_mount(), but here we are in nasal daemon country - we are reading from a member of union we'd never stored into. In practice, we'll get what we used to store into the overlapping field, i.e. ffs_dev. And then we get screwed, since we treat it (struct gfs_ffs_obj * in disguise, returned by functionfs_acquire_dev_callback()) as struct ffs_data *, pick what would've been ffs_data ->private_data from it (*well* past the actual end of the struct gfs_ffs_obj - struct ffs_data is much bigger) and poke in whatever it points to. FWIW, there's a minor leak on top of all that in case if ffs_sb_fill() fails on kstrdup() - ffs is obviously forgotten. The thing is, there is no point in playing all those games with union. Just allocate and initialize ffs_data *before* calling mount_nodev() and pass a pointer to it via data.ffs_data. And once it's stored in sb->s_fs_info, clear data.ffs_data, so that ffs_fs_mount() knows that it doesn't need to kill the sucker manually - from that point on we'll have it done by ->kill_sb(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> Acked-by: Michal Nazarewicz <mina86@mina86.com> Cc: stable <stable@vger.kernel.org> # 3.3+ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>