18 Mar, 2011

16 commits

  • In most cases, get_user_pages and get_user_pages_fast should be used
    to pin user pages in memory. But sometimes, some special flags except
    FOLL_GET, FOLL_WRITE and FOLL_FORCE are needed, for example in
    following patch, KVM needs FOLL_HWPOISON. To support these users,
    __get_user_pages is exported directly.

    There are some symbol name conflicts in infiniband driver, fixed them too.

    Signed-off-by: Huang Ying
    CC: Andrew Morton
    CC: Michel Lespinasse
    CC: Roland Dreier
    CC: Ralph Campbell
    Signed-off-by: Marcelo Tosatti

    Huang Ying
     
  • A correction to Intel cpu model CPUID data (patch queued)
    caused winxp to BSOD when booted with a Penryn model.
    This was traced to the CPUID "model" field correction from
    6 -> 23 (as is proper for a Penryn class of cpu). Only in
    this case does the problem surface.

    The cause for this failure is winxp accessing the BBL_CR_CTL3
    MSR which is unsupported by current kvm, appears to be a
    legacy MSR not fully characterized yet existing in current
    silicon, and is apparently carried forward in MSR space to
    accommodate vintage code as here. It is not yet conclusive
    whether this MSR implements any of its legacy functionality
    or is just an ornamental dud for compatibility. While I
    found no silicon version specific documentation link to
    this MSR, a general description exists in Intel's developer's
    reference which agrees with the functional behavior of
    other bootloader/kernel code I've examined accessing
    BBL_CR_CTL3. Regrettably winxp appears to be setting bit #19
    called out as "reserved" in the above document.

    So to minimally accommodate this MSR, kvm msr get will provide
    the equivalent mock data and kvm msr write will simply toss the
    guest passed data without interpretation. While this treatment
    of BBL_CR_CTL3 addresses the immediate problem, the approach may
    be modified pending clarification from Intel.

    Signed-off-by: john cooper
    Signed-off-by: Marcelo Tosatti

    john cooper
     
  • Now, we have 'vcpu->mode' to judge whether need to send ipi to other
    cpus, this way is very exact, so checking request bit is needless,
    then we can drop the spinlock let it's collateral

    Signed-off-by: Xiao Guangrong
    Signed-off-by: Avi Kivity

    Xiao Guangrong
     
  • Currently we keep track of only two states: guest mode and host
    mode. This patch adds an "exiting guest mode" state that tells
    us that an IPI will happen soon, so unless we need to wait for the
    IPI, we can avoid it completely.

    Also
    1: No need atomically to read/write ->mode in vcpu's thread

    2: reorganize struct kvm_vcpu to make ->mode and ->requests
    in the same cache line explicitly

    Signed-off-by: Xiao Guangrong
    Signed-off-by: Avi Kivity

    Xiao Guangrong
     
  • Get rid of this warning:

    CC arch/s390/kvm/../../../virt/kvm/kvm_main.o
    arch/s390/kvm/../../../virt/kvm/kvm_main.c:596:12: warning: 'kvm_create_dirty_bitmap' defined but not used

    The only caller of the function is within a !CONFIG_S390 section, so add the
    same ifdef around kvm_create_dirty_bitmap() as well.

    Signed-off-by: Heiko Carstens
    Signed-off-by: Marcelo Tosatti

    Heiko Carstens
     
  • This case is a pure user space error we do not need to record. Moreover,
    it can be misused to flood the kernel log. Remove it.

    Signed-off-by: Jan Kiszka
    Signed-off-by: Marcelo Tosatti

    Jan Kiszka
     
  • Fix:

    [ 1001.499596] ===================================================
    [ 1001.499599] [ INFO: suspicious rcu_dereference_check() usage. ]
    [ 1001.499601] ---------------------------------------------------
    [ 1001.499604] include/linux/kvm_host.h:301 invoked rcu_dereference_check() without protection!
    ......
    [ 1001.499636] Pid: 6035, comm: qemu-system-x86 Not tainted 2.6.37-rc6+ #62
    [ 1001.499638] Call Trace:
    [ 1001.499644] [] lockdep_rcu_dereference+0x9d/0xa5
    [ 1001.499653] [] gfn_to_memslot+0x8d/0xc8 [kvm]
    [ 1001.499661] [] gfn_to_hva+0x16/0x3f [kvm]
    [ 1001.499669] [] kvm_read_guest_page+0x1e/0x5e [kvm]
    [ 1001.499681] [] kvm_read_guest_page_mmu+0x53/0x5e [kvm]
    [ 1001.499699] [] load_pdptrs+0x3f/0x9c [kvm]
    [ 1001.499705] [] ? vmx_set_cr0+0x507/0x517 [kvm_intel]
    [ 1001.499717] [] kvm_arch_vcpu_ioctl_set_sregs+0x1f3/0x3c0 [kvm]
    [ 1001.499727] [] kvm_vcpu_ioctl+0x6a5/0xbc5 [kvm]

    Signed-off-by: Xiao Guangrong
    Signed-off-by: Marcelo Tosatti

    Xiao Guangrong
     
  • Instead of exchanging the guest and host rcx, have separate storage
    for each. This allows us to avoid using the xchg instruction, which
    is is a little slower than normal operations.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • Change

    push top-of-stack
    pop guest-rcx
    pop dummy

    to

    pop guest-rcx

    which is the same thing, only simpler.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • On some CPUs, a ple_gap of 41 is simply insufficient to ever trigger
    PLE exits, even with the minimalistic PLE test from kvm-unit-tests.

    http://git.kernel.org/?p=virt/kvm/kvm-unit-tests.git;a=commitdiff;h=eda71b28fa122203e316483b35f37aaacd42f545

    For example, the Xeon X5670 CPU needs a ple_gap of at least 48 in
    order to get pause loop exits:

    # modprobe kvm_intel ple_gap=47
    # taskset 1 /usr/local/bin/qemu-system-x86_64 \
    -device testdev,chardev=log -chardev stdio,id=log \
    -kernel x86/vmexit.flat -append ple-round-robin -smp 2
    VNC server running on `::1:5900'
    enabling apic
    enabling apic
    ple-round-robin 58298446
    # rmmod kvm_intel
    # modprobe kvm_intel ple_gap=48
    # taskset 1 /usr/local/bin/qemu-system-x86_64 \
    -device testdev,chardev=log -chardev stdio,id=log \
    -kernel x86/vmexit.flat -append ple-round-robin -smp 2
    VNC server running on `::1:5900'
    enabling apic
    enabling apic
    ple-round-robin 36616

    Increase the ple_gap to 128 to be on the safe side.

    Signed-off-by: Rik van Riel
    Acked-by: Zhai, Edwin
    Signed-off-by: Avi Kivity

    Rik van Riel
     
  • This patch adds the necessary code to run perf-kvm on AMD
    machines.

    Signed-off-by: Joerg Roedel
    Signed-off-by: Avi Kivity

    Joerg Roedel
     
  • When emulating real mode, we fake some state:

    - tr.base points to a fake vm86 tss
    - segment registers are made to conform to vm86 restrictions

    change vmx_get_segment() not to expose this fake state to userspace;
    instead, return the original state.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • When emulating real mode we play with tr hidden state, but leave
    tr.selector alone. That works well, except for save/restore, since
    loading TR writes it to the hidden state in vmx->rmode.

    Fix by also saving and restoring the tr selector; this makes things
    more consistent and allows migration to work during the early
    boot stages of Windows XP.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     
  • Previously SPRGs 4-7 were improperly read and written in
    kvm_arch_vcpu_ioctl_get_regs() and kvm_arch_vcpu_ioctl_set_regs();

    Signed-off-by: Alexander Graf
    Signed-off-by: Peter Tyser
    Signed-off-by: Marcelo Tosatti

    Peter Tyser
     
  • WARNING: arch/x86/built-in.o(.text+0x1bb74): Section mismatch in reference from the function kvm_guest_cpu_online() to the function .cpuinit.text:kvm_guest_cpu_init()
    The function kvm_guest_cpu_online() references
    the function __cpuinit kvm_guest_cpu_init().
    This is often because kvm_guest_cpu_online lacks a __cpuinit
    annotation or the annotation of kvm_guest_cpu_init is wrong.

    This patch fixes the warning.

    Tested with linux-next (next-20101231)

    Signed-off-by: Sedat Dilek
    Acked-by: Rik van Riel
    Signed-off-by: Marcelo Tosatti

    Sedat Dilek
     
  • Instead, drop large mappings, which were the reason we dropped shadow.

    Signed-off-by: Avi Kivity
    Signed-off-by: Marcelo Tosatti

    Avi Kivity
     

17 Mar, 2011

24 commits

  • * 'mnt_devname' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
    vfs: bury ->get_sb()
    nfs: switch NFS from ->get_sb() to ->mount()
    nfs: stop mangling ->mnt_devname on NFS
    vfs: new superblock methods to override /proc/*/mount{s,info}
    nfs: nfs_do_{ref,sub}mount() superblock argument is redundant
    nfs: make nfs_path() work without vfsmount
    nfs: store devname at disconnected NFS roots
    nfs: propagate devname to nfs{,4}_get_root()

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k:
    m68k/block: amiflop - Remove superfluous amiga_chip_alloc() cast
    m68k/atari: ARAnyM - Add support for network access
    m68k/atari: ARAnyM - Add support for console access
    m68k/atari: ARAnyM - Add support for block access
    m68k/atari: Initial ARAnyM support
    m68k: Kconfig - Remove unneeded "default n"
    m68k: Makefiles - Change to new flags variables
    m68k/amiga: Reclaim Chip RAM for PPC exception handlers
    m68k: Allow all kernel traps to be handled via exception fixups
    m68k: Use base_trap_init() to initialize vectors
    m68k: Add helper function handle_kernel_fault()

    Linus Torvalds
     
  • * 'remove' of master.kernel.org:/home/rmk/linux-2.6-arm:
    ARM: 6629/2: aaec2000: remove support for mach-aaec2000
    ARM: lh7a40x: remove unmaintained platform support

    Fix up trivial conflicts in
    - arch/arm/mach-{aaec2000,lh7a40x}/include/mach/memory.h (removed)
    - drivers/usb/gadget/Kconfig (USB_[GADGET_]LH7A40X removed, others added)

    Linus Torvalds
     
  • * 'for-linus' of master.kernel.org:/home/rmk/linux-2.6-arm: (91 commits)
    ARM: 6806/1: irq: introduce entry and exit functions for chained handlers
    ARM: 6781/1: Thumb-2: Work around buggy Thumb-2 short branch relocations in gas
    ARM: 6747/1: P2V: Thumb2 support
    ARM: 6798/1: aout-core: zero thread debug registers in a.out core dump
    ARM: 6796/1: Footbridge: Fix I/O mappings for NOMMU mode
    ARM: 6784/1: errata: no automatic Store Buffer drain on Cortex-A9
    ARM: 6772/1: errata: possible fault MMU translations following an ASID switch
    ARM: 6776/1: mach-ux500: activate fix for errata 753970
    ARM: 6794/1: SPEAr: Append UL to device address macros.
    ARM: 6793/1: SPEAr: Remove unused *_SIZE macros from spear*.h files
    ARM: 6792/1: SPEAr: Replace SIZE macro's with SZ_4K macros
    ARM: 6791/1: SPEAr3xx: Declare device structures after shirq code
    ARM: 6790/1: SPEAr: Clock Framework: Rename usbd clock and align apb_clk entry
    ARM: 6789/1: SPEAr3xx: Rename sdio to sdhci
    ARM: 6788/1: SPEAr: Include mach/hardware.h instead of mach/spear.h
    ARM: 6787/1: SPEAr: Reorder #includes in .h & .c files.
    ARM: 6681/1: SPEAr: add debugfs support to clk API
    ARM: 6703/1: SPEAr: update clk API support
    ARM: 6679/1: SPEAr: make clk API functions more generic
    ARM: 6737/1: SPEAr: formalized timer support
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: (41 commits)
    m68knommu: external interrupt support to ColdFire intc-simr controller
    m68knommu: external interrupt support to ColdFire intc-2 controller
    m68knommu: remove ColdFire CLOCK_DIV config option
    m68knommu: fix gpio warnings for ColdFire 5407 targets
    m68knommu: fix gpio warnings for ColdFire 532x targets
    m68knommu: fix gpio warnings for ColdFire 5307 targets
    m68knommu: fix gpio warnings for ColdFire 527x targets
    m68knommu: fix gpio warnings for ColdFire 5272 targets
    m68knommu: fix gpio warnings for ColdFire 5249 targets
    m68knommu: fix gpio warnings for ColdFire 523x targets
    m68knommu: fix gpio warnings for ColdFire 520x targets
    m68knommu: fix gpio warnings for ColdFire 5206e targets
    m68knommu: fix gpio warnings for ColdFire 5206 targets
    m68knommu: fixing compiler warnings
    m68knommu: limit interrupts supported by ColdFire intc-simr driver
    m68knommu: move some init code out of unmask routine for ColdFire intc-2
    m68knommu: limit interrupts supported by ColdFire intc-2 driver
    m68knommu: add basic support for the ColdFire based FireBee board
    m68knommu: make ColdFire internal peripheral region configurable
    m68knommu: clean up definitions of ColdFire peripheral base registers
    ...

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
    [IA64] tioca: Fix assignment from incompatible pointer warnings
    [IA64] mca.c: Fix cast from integer to pointer warning
    [IA64] setup.c Typo fix "Architechtuallly"
    [IA64] Add CONFIG_MISC_DEVICES=y to configs that need it.
    [IA64] disable interrupts at end of ia64_mca_cpe_int_handler()
    [IA64] Add DMA_ERROR_CODE define.
    pstore: fix build warning for unused return value from sysfs_create_file
    pstore: X86 platform interface using ACPI/APEI/ERST
    pstore: new filesystem interface to platform persistent storage

    Linus Torvalds
     
  • * 'devicetree/next' of git://git.secretlab.ca/git/linux-2.6: (21 commits)
    tty: serial: altera_jtaguart: Add device tree support
    tty: serial: altera_uart: Add devicetree support
    dt: eliminate of_platform_driver shim code
    dt: Eliminate of_platform_{,un}register_driver
    dt/serial: Eliminate users of of_platform_{,un}register_driver
    dt/usb: Eliminate users of of_platform_{,un}register_driver
    dt/video: Eliminate users of of_platform_{,un}register_driver
    dt/net: Eliminate users of of_platform_{,un}register_driver
    dt/sound: Eliminate users of of_platform_{,un}register_driver
    dt/spi: Eliminate users of of_platform_{,un}register_driver
    dt: uartlite: merge platform and of_platform driver bindings
    dt: xilinx_hwicap: merge platform and of_platform driver bindings
    ipmi: convert OF driver to platform driver
    leds/leds-gpio: merge platform_driver with of_platform_driver
    dt/sparc: Eliminate users of of_platform_{,un}register_driver
    dt/powerpc: Eliminate users of of_platform_{,un}register_driver
    dt/powerpc: move of_bus_type infrastructure to ibmebus
    drivercore/dt: add a match table pointer to struct device
    dt: Typo fix.
    altera_ps2: Add devicetree support
    ...

    Linus Torvalds
     
  • * 'config' of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:
    BKL: That's all, folks
    fs/locks.c: Remove stale FIXME left over from BKL conversion
    ipx: remove the BKL
    appletalk: remove the BKL
    x25: remove the BKL
    ufs: remove the BKL
    hpfs: remove the BKL
    drivers: remove extraneous includes of smp_lock.h
    tracing: don't trace the BKL
    adfs: remove the big kernel lock

    Linus Torvalds
     
  • Conflicts:
    arch/arm/kernel/module.c
    arch/arm/mach-s5pv210/sleep.S

    Russell King
     
  • Conflicts:
    arch/arm/include/asm/cacheflush.h
    arch/arm/include/asm/proc-fns.h
    arch/arm/mm/Kconfig

    Russell King
     
  • Conflicts:
    arch/arm/Kconfig

    Russell King
     
  • …data', 'pm', 'sh', 'smp', 'spear', 'ux500' and 'via' into devel

    Russell King
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits)
    bonding: enable netpoll without checking link status
    xfrm: Refcount destination entry on xfrm_lookup
    net: introduce rx_handler results and logic around that
    bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag
    bonding: wrap slave state work
    net: get rid of multiple bond-related netdevice->priv_flags
    bonding: register slave pointer for rx_handler
    be2net: Bump up the version number
    be2net: Copyright notice change. Update to Emulex instead of ServerEngines
    e1000e: fix kconfig for crc32 dependency
    netfilter ebtables: fix xt_AUDIT to work with ebtables
    xen network backend driver
    bonding: Improve syslog message at device creation time
    bonding: Call netif_carrier_off after register_netdevice
    bonding: Incorrect TX queue offset
    net_sched: fix ip_tos2prio
    xfrm: fix __xfrm_route_forward()
    be2net: Fix UDP packet detected status in RX compl
    Phonet: fix aligned-mode pipe socket buffer header reserve
    netxen: support for GbE port settings
    ...

    Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c
    with the staging updates.

    Linus Torvalds
     
  • * 'staging-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging-2.6: (961 commits)
    staging: hv: fix memory leaks
    staging: hv: Remove NULL check before kfree
    Staging: hv: Get rid of vmbus_child_dev_add()
    Staging: hv: Change the signature for vmbus_child_device_register()
    Staging: hv: Get rid of vmbus_cleanup() function
    Staging: hv: Get rid of vmbus_dev_rm() function
    Staging: hv: Change the signature for vmbus_on_isr()
    Staging: hv: Eliminate vmbus_event_dpc()
    Staging: hv: Get rid of the function vmbus_msg_dpc()
    Staging: hv: Change the signature for vmbus_cleanup()
    Staging: hv: Simplify root device management
    staging: rtl8192e: Don't copy dev pointer to skb
    staging: rtl8192e: Pass priv to cmdpkt functions
    staging: rtl8192e: Pass priv to firmware download functions
    staging: rtl8192e: Pass priv to rtl8192_interrupt
    staging: rtl8192e: Pass rtl8192_priv to dm functions
    staging: rtl8192e: Pass ieee80211_device to callbacks
    staging: rtl8192e: Pass ieee80211_device to callbacks
    staging: rtl8192e: Pass ieee80211_device to callbacks
    staging: rtl8192e: Pass ieee80211_device to callbacks
    ...

    Linus Torvalds
     
  • * 'tty-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6: (76 commits)
    pch_uart: reference clock on CM-iTC
    pch_phub: add new device ML7213
    n_gsm: fix UIH control byte : P bit should be 0
    n_gsm: add a documentation
    serial: msm_serial_hs: Add MSM high speed UART driver
    tty_audit: fix tty_audit_add_data live lock on audit disabled
    tty: move cd1865.h to drivers/staging/tty/
    Staging: tty: fix build with epca.c driver
    pcmcia: synclink_cs: fix prototype for mgslpc_ioctl()
    Staging: generic_serial: fix double locking bug
    nozomi: don't use flush_scheduled_work()
    tty/serial: Relax the device_type restriction from of_serial
    MAINTAINERS: Update HVC file patterns
    tty: phase out of ioctl file pointer for tty3270 as well
    tty: forgot to remove ipwireless from drivers/char/pcmcia/Makefile
    pch_uart: Fix DMA channel miss-setting issue.
    pch_uart: fix exclusive access issue
    pch_uart: fix auto flow control miss-setting issue
    pch_uart: fix uart clock setting issue
    pch_uart : Use dev_xxx not pr_xxx
    ...

    Fix up trivial conflicts in drivers/misc/pch_phub.c (same patch applied
    twice, then changes to the same area in one branch)

    Linus Torvalds
     
  • …/gregkh/driver-core-2.6

    * 'driver-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (50 commits)
    printk: do not mangle valid userspace syslog prefixes
    efivars: Add Documentation
    efivars: Expose efivars functionality to external drivers.
    efivars: Parameterize operations.
    efivars: Split out variable registration
    efivars: parameterize efivars
    efivars: Make efivars bin_attributes dynamic
    efivars: move efivars globals into struct efivars
    drivers:misc: ti-st: fix debugging code
    kref: Fix typo in kref documentation
    UIO: add PRUSS UIO driver support
    Fix spelling mistakes in Documentation/zh_CN/SubmittingPatches
    firmware: Fix unaligned memory accesses in dmi-sysfs
    firmware: Add documentation for /sys/firmware/dmi
    firmware: Expose DMI type 15 System Event Log
    firmware: Break out system_event_log in dmi-sysfs
    firmware: Basic dmi-sysfs support
    firmware: Add DMI entry types to the headers
    Driver core: convert platform_{get,set}_drvdata to static inline functions
    Translate linux-2.6/Documentation/magic-number.txt into Chinese
    ...

    Linus Torvalds
     
  • * 'usb-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6: (172 commits)
    USB: Add support for SuperSpeed isoc endpoints
    xhci: Clean up cycle bit math used during stalls.
    xhci: Fix cycle bit calculation during stall handling.
    xhci: Update internal dequeue pointers after stalls.
    USB: Disable auto-suspend for USB 3.0 hubs.
    USB: Remove bogus USB_PORT_STAT_SUPER_SPEED symbol.
    xhci: Return canceled URBs immediately when host is halted.
    xhci: Fixes for suspend/resume of shared HCDs.
    xhci: Fix re-init on power loss after resume.
    xhci: Make roothub functions deal with device removal.
    xhci: Limit roothub ports to 15 USB3 & 31 USB2 ports.
    xhci: Return a USB 3.0 hub descriptor for USB3 roothub.
    xhci: Register second xHCI roothub.
    xhci: Change xhci_find_slot_id_by_port() API.
    xhci: Refactor bus suspend state into a struct.
    xhci: Index with a port array instead of PORTSC addresses.
    USB: Set usb_hcd->state and flags for shared roothubs.
    usb: Make core allocate resources per PCI-device.
    usb: Store bus type in usb_hcd, not in driver flags.
    usb: Change usb_hcd->bandwidth_mutex to a pointer.
    ...

    Linus Torvalds
     
  • This is an ex-parrot.

    Signed-off-by: Al Viro

    Al Viro
     
  • The last remaining instances of ->get_sb() can be converted ->mount()
    now - nothing in them uses new vfsmount anymore.

    Signed-off-by: Al Viro

    Al Viro
     
  • now we can do that - nobody cares about its value anymore.

    Signed-off-by: Al Viro

    Al Viro
     
  • a) ->show_devname(m, mnt) - what to put into devname columns in mounts,
    mountinfo and mountstats
    b) ->show_path(m, mnt) - what to put into relative path column in mountinfo

    Leaving those NULL gives old behaviour. NFS switched to using those.

    Signed-off-by: Al Viro

    Al Viro
     
  • It's always equal to dentry->d_sb

    Signed-off-by: Al Viro

    Al Viro
     
  • part 3: now we have everything to get nfs_path() just by dentry -
    just follow to (disconnected) root and pick the rest of the thing
    there.

    Start killing propagation of struct vfsmount * on the paths that
    used to bring it to nfs_path().

    Signed-off-by: Al Viro

    Al Viro
     
  • part 2: make sure that disconnected roots have corresponding mnt_devname
    values stashed into them.

    Have nfs*_get_root() stuff a copy of devname into ->d_fsdata of the
    found root, provided that it is disconnected.

    Have ->d_release() free it when dentry goes away.

    Have the places where NFS uses ->d_fsdata for sillyrename (and that
    can *never* happen to a disconnected root - dentry will be attached
    to its parent) free old devname copies if they find those.

    Signed-off-by: Al Viro

    Al Viro