1. 14 10月, 2008 40 次提交
    • T
      ocfs2: Add xattr bucket iteration for large numbers of EAs · 0c044f0b
      Tao Ma 提交于
      Ocfs2 breaks up xattr index tree leaves into 4k regions, called buckets.
      Attributes are stored within a given bucket, depending on hash value.
      
      After a discussion with Mark, we decided that the per-bucket index
      (xe_entry[]) would only exist in the 1st block of a bucket. Likewise,
      name/value pairs will not straddle more than one block. This allows the
      majority of operations to work directly on the buffer heads in a leaf block.
      
      This patch adds code to iterate the buckets in an EA. A new abstration of
      ocfs2_xattr_bucket is added. It records the bhs in this bucket and
      ocfs2_xattr_header. This keeps the code neat, improving readibility.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      0c044f0b
    • T
      ocfs2: Add xattr index tree operations · ba492615
      Tao Ma 提交于
      When necessary, an ocfs2_xattr_block will embed an ocfs2_extent_list to
      store large numbers of EAs. This patch adds a new type in
      ocfs2_extent_tree_type and adds the implementation so that we can re-use the
      b-tree code to handle the storage of many EAs.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      ba492615
    • T
      ocfs2: Add extended attribute support · cf1d6c76
      Tiger Yang 提交于
      This patch implements storing extended attributes both in inode or a single
      external block. We only store EA's in-inode when blocksize > 512 or that
      inode block has free space for it. When an EA's value is larger than 80
      bytes, we will store the value via b-tree outside inode or block.
      Signed-off-by: NTiger Yang <tiger.yang@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      cf1d6c76
    • T
      ocfs2: reserve inline space for extended attribute · fdd77704
      Tiger Yang 提交于
      Add the structures and helper functions we want for handling inline extended
      attributes. We also update the inline-data handlers so that they properly
      function in the event that we have both inline data and inline attributes
      sharing an inode block.
      Signed-off-by: NTiger Yang <tiger.yang@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      fdd77704
    • T
      ocfs2: Add extent tree operation for xattr value btrees · f56654c4
      Tao Ma 提交于
      Add some thin wrappers around ocfs2_insert_extent() for each of the 3
      different btree types, ocfs2_inode_insert_extent(),
      ocfs2_xattr_value_insert_extent() and ocfs2_xattr_tree_insert_extent(). The
      last is for the xattr index btree, which will be used in a followup patch.
      
      All the old callers in file.c etc will call ocfs2_dinode_insert_extent(),
      while the other two handle the xattr issue. And the init of extent tree are
      handled by these functions.
      
      When storing xattr value which is too large, we will allocate some clusters
      for it and here ocfs2_extent_list and ocfs2_extent_rec will also be used. In
      order to re-use the b-tree operation code, a new parameter named "private"
      is added into ocfs2_extent_tree and it is used to indicate the root of
      ocfs2_exent_list. The reason is that we can't deduce the root from the
      buffer_head now. It may be in an inode, an ocfs2_xattr_block or even worse,
      in any place in an ocfs2_xattr_bucket.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      f56654c4
    • T
      ocfs2: Add helper function in uptodate.c for removing xattr clusters · ac11c827
      Tao Ma 提交于
      The old uptodate only handles the issue of removing one buffer_head from
      ocfs2 inode's buffer cache. With xattr clusters, we may need to remove
      multiple buffer_head's at a time.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      ac11c827
    • T
      ocfs2: Add the basic xattr disk layout in ocfs2_fs.h · 5a7bc8eb
      Tao Ma 提交于
      Ocfs2 uses a very flexible structure for storing extended attributes on
      disk. Small amount of attributes are stored directly in the inode block - up
      to 256 bytes worth. If that fills up, attributes are also stored in an
      external block, linked to from the inode block. That block can in turn
      expand to a btree, capable of storing large numbers of attributes.
      
      Individual attribute values are stored inline if they're small enough
      (currently about 80 bytes, this can be changed though), and otherwise are
      expanded to a btree. The theoretical limit to the size of an individual
      attribute is about the same as an inode, though the kernel's upper bound on
      the size of an attributes data is far smaller.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      5a7bc8eb
    • T
      ocfs2: Make high level btree extend code generic · 0eb8d47e
      Tao Ma 提交于
      Factor out the non-inode specifics of ocfs2_do_extend_allocation() into a more generic
      function, ocfs2_do_cluster_allocation(). ocfs2_do_extend_allocation calls
      ocfs2_do_cluster_allocation() now, but the latter can be used for other
      btree types as well.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      0eb8d47e
    • T
      ocfs2: Abstract ocfs2_extent_tree in b-tree operations. · e7d4cb6b
      Tao Ma 提交于
      In the old extent tree operation, we take the hypothesis that we
      are using the ocfs2_extent_list in ocfs2_dinode as the tree root.
      As xattr will also use ocfs2_extent_list to store large value
      for a xattr entry, we refactor the tree operation so that xattr
      can use it directly.
      
      The refactoring includes 4 steps:
      1. Abstract set/get of last_eb_blk and update_clusters since they may
         be stored in different location for dinode and xattr.
      2. Add a new structure named ocfs2_extent_tree to indicate the
         extent tree the operation will work on.
      3. Remove all the use of fe_bh and di, use root_bh and root_el in
         extent tree instead. So now all the fe_bh is replaced with
         et->root_bh, el with root_el accordingly.
      4. Make ocfs2_lock_allocators generic. Now it is limited to be only used
         in file extend allocation. But the whole function is useful when we want
         to store large EAs.
      
      Note: This patch doesn't touch ocfs2_commit_truncate() since it is not used
      for anything other than truncate inode data btrees.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      e7d4cb6b
    • T
      ocfs2: Use ocfs2_extent_list instead of ocfs2_dinode. · 811f933d
      Tao Ma 提交于
      ocfs2_extend_meta_needed(), ocfs2_calc_extend_credits() and
      ocfs2_reserve_new_metadata() are all useful for extent tree operations. But
      they are all limited to an inode btree because they use a struct
      ocfs2_dinode parameter. Change their parameter to struct ocfs2_extent_list
      (the part of an ocfs2_dinode they actually use) so that the xattr btree code
      can use these functions.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      811f933d
    • T
      ocfs2: Modify ocfs2_num_free_extents for future xattr usage. · 231b87d1
      Tao Ma 提交于
      ocfs2_num_free_extents() is used to find the number of free extent records
      in an inode btree. Hence, it takes an "ocfs2_dinode" parameter. We want to
      use this for extended attribute trees in the future, so genericize the
      interface the take a buffer head. A future patch will allow that buffer_head
      to contain any structure rooting an ocfs2 btree.
      Signed-off-by: NTao Ma <tao.ma@oracle.com>
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      231b87d1
    • M
      ocfs2: track local alloc state via debugfs · 9a8ff578
      Mark Fasheh 提交于
      A per-mount debugfs file, "local_alloc" is created which when read will
      expose live state of the nodes local alloc file. Performance impact is
      minimal, only a bit of memory overhead per mount point. Still, the code is
      hidden behind CONFIG_OCFS2_FS_STATS. This feature will help us debug
      local alloc performance problems on a live system.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      9a8ff578
    • M
      ocfs2: throttle back local alloc when low on disk space · 9c7af40b
      Mark Fasheh 提交于
      Ocfs2's local allocator disables itself for the duration of a mount point
      when it has trouble allocating a large enough area from the primary bitmap.
      That can cause performance problems, especially for disks which were only
      temporarily full or fragmented. This patch allows for the allocator to
      shrink it's window first, before being disabled. Later, it can also be
      re-enabled so that any performance drop is minimized.
      
      To do this, we allow the value of osb->local_alloc_bits to be shrunk when
      needed. The default value is recorded in a mostly read-only variable so that
      we can re-initialize when required.
      
      Locking had to be updated so that we could protect changes to
      local_alloc_bits. Mostly this involves protecting various local alloc values
      with the osb spinlock. A new state is also added, OCFS2_LA_THROTTLED, which
      is used when the local allocator is has shrunk, but is not disabled. If the
      available space dips below 1 megabyte, the local alloc file is disabled. In
      either case, local alloc is re-enabled 30 seconds after the event, or when
      an appropriate amount of bits is seen in the primary bitmap.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      9c7af40b
    • M
      ocfs2: Track local alloc bits internally · ebcee4b5
      Mark Fasheh 提交于
      Do this instead of tracking absolute local alloc size. This avoids
      needless re-calculatiion of bits from bytes in localalloc.c. Additionally,
      the value is now in a more natural unit for internal file system bitmap
      work.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      ebcee4b5
    • M
      ocfs2: POSIX file locks support · 53da4939
      Mark Fasheh 提交于
      This is actually pretty easy since fs/dlm already handles the bulk of the
      work. The Ocfs2 userspace cluster stack module already uses fs/dlm as the
      underlying lock manager, so I only had to add the right calls.
      
      Cluster-aware POSIX locks ("plocks") can be turned off by the same means at
      UNIX locks - mount with 'noflocks', or create a local-only Ocfs2 volume.
      Internally, the file system uses two sets of file_operations, depending on
      whether cluster aware plocks is required. This turns out to be easier than
      implementing local-only versions of ->lock.
      Signed-off-by: NMark Fasheh <mfasheh@suse.com>
      53da4939
    • S
      vfs: Use const for kernel parser table · a447c093
      Steven Whitehouse 提交于
      This is a much better version of a previous patch to make the parser
      tables constant. Rather than changing the typedef, we put the "const" in
      all the various places where its required, allowing the __initconst
      exception for nfsroot which was the cause of the previous trouble.
      
      This was posted for review some time ago and I believe its been in -mm
      since then.
      Signed-off-by: NSteven Whitehouse <swhiteho@redhat.com>
      Cc: Alexander Viro <aviro@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a447c093
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6 · 54cebc68
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/blackfin-2.6: (60 commits)
        Blackfin arch: make sure we include the fix for SPORT hysteresis when reprogramming clocks
        Blackfin arch: Fix bogus str_ident check in gpio code
        Blackfin arch: AD7879 Touchscreen driver
        Blackfin arch: introducing bfin_addr_dcachable
        Blackfin arch: fix a typo in comments
        Blackfin arch: Remove useless head file
        Blackfin arch: make sure L2 start and length are always defined (fixes building on BF542)
        Blackfin arch: use the Blackfin on-chip ROM to do software reset when possible
        Blackfin arch: update anomaly headers to match the latest sheet
        Blackfin arch: bfin_reset() is an internal reboot function ... everyone should go through machine_restart()
        Blackfin arch: print out error/warning if you are running on the incorrect CPU type
        Blackfin arch: remove non-bf54x ifdef logic since this file is only compiled on bf54x parts
        Blackfin arch: update board defconfigs
        Blackfin arch: Add optional verbose debug
        Blackfin arch: emulate a TTY over the EMUDAT/JTAG interface
        Blackfin arch: have is_user_addr_valid() check for overflows (like when address is -1)
        Blackfin arch: ptrace - fix off-by-one check on end of memory regions
        Blackfin arch: Enable framebuffer support for the BF526-EZkit TFT LCD display
        Blackfin arch: flash memory map and dm9000 resources updating
        Blackfin arch: early prink code still use uart core console functions to parse and set configure option string
        ...
      54cebc68
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · fffdedef
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
        net/mac80211/rx.c: fix build error
        acpi: Make ACPI_TOSHIBA depend on INPUT.
        net/bfin_mac.c MDIO namespace fixes
        jme: remove unused #include <version.h>
        netfilter: remove unused #include <version.h>
        net: Fix off-by-one in skb_dma_map
        smc911x: Add support for LAN921{5,7,8} chips from SMSC
        qlge: remove duplicated #include
        wireless: remove duplicated #include
        net/au1000_eth.c MDIO namespace fixes
        net/tc35815.c: fix compilation
        sky2: Fix WOL regression
        r8169: NULL pointer dereference on r8169 load
      fffdedef
    • L
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6 · 5723ff93
      Linus Torvalds 提交于
      * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
        chmc: Mark %ver register inline asm with __volatile__
        sparc64: Add missing notify_cpu_starting() call.
        sparc32: fix build errors
      5723ff93
    • L
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6 · be3bfbba
      Linus Torvalds 提交于
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (33 commits)
        ALSA: ASoC codec: remove unused #include <version.h>
        ALSA: ASoC: update email address for Liam Girdwood
        ALSA: hda: corrected invalid mixer values
        ALSA: hda: add mixers for analog mixer on 92hd75xx codecs
        ALSA: ASoC: Add destination and source port for DMA on OMAP1
        ALSA: ASoC: Drop device registration from GTA01 lm4857 driver
        ALSA: ASoC: Fix build of GTA01 audio driver
        ALSA: ASoC: Add widgets before setting endpoints on GTA01
        ALSA: ASoC: Fix inverted input PGA mute bits in WM8903
        ALSA: ASoC: OMAP: Set DMA stream name at runtime in McBSP DAI driver
        ALSA: ASoC: OMAP: Add support for OMAP2430 and OMAP34xx in McBSP DAI driver
        ALSA: ASoC: OMAP: Add multilink support to McBSP DAI driver
        ALSA: ASoC: Make TLV320AIC26 user-visible
        ALSA: ASoC - clean up Kconfig for TLV320AIC2
        ALSA: ASoC: Make WM8510 microphone input a DAPM mixer
        ALSA: ASoC: Implement WM8510 bias level control
        ALSA: ASoC: Remove unused AUDIO_NAME define from codec drivers
        ALSA: ASoC: tlv320aic3x: Use uniform tlv320aic naming
        ALSA: ASoC: Add WM8510 SPI support
        ALSA: ASoC: Add WM8753 SPI support
        ...
      be3bfbba
    • L
      Merge branch 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc · 20272c89
      Linus Torvalds 提交于
      * 'proc' of git://git.kernel.org/pub/scm/linux/kernel/git/adobriyan/proc:
        proc: remove kernel.maps_protect
        proc: remove now unneeded ADDBUF macro
        [PATCH] proc: show personality via /proc/pid/personality
        [PATCH] signal, procfs: some lock_task_sighand() users do not need rcu_read_lock()
        proc: move PROC_PAGE_MONITOR to fs/proc/Kconfig
        proc: make grab_header() static
        proc: remove unused get_dma_list()
        proc: remove dummy vmcore_open()
        proc: proc_sys_root tweak
        proc: fix return value of proc_reg_open() in "too late" case
      
      Fixed up trivial conflict in removed file arch/sparc/include/asm/dma_32.h
      20272c89
    • L
      Merge branch 'for-linus' of... · 8d71ff0b
      Linus Torvalds 提交于
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6
      
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6: (24 commits)
        integrity: special fs magic
        As pointed out by Jonathan Corbet, the timer must be deleted before
        ERROR: code indent should use tabs where possible
        The tpm_dev_release function is only called for platform devices, not pnp
        Protect tpm_chip_list when transversing it.
        Renames num_open to is_open, as only one process can open the file at a time.
        Remove the BKL calls from the TPM driver, which were added in the overall
        netlabel: Add configuration support for local labeling
        cipso: Add support for native local labeling and fixup mapping names
        netlabel: Changes to the NetLabel security attributes to allow LSMs to pass full contexts
        selinux: Cache NetLabel secattrs in the socket's security struct
        selinux: Set socket NetLabel based on connection endpoint
        netlabel: Add functionality to set the security attributes of a packet
        netlabel: Add network address selectors to the NetLabel/LSM domain mapping
        netlabel: Add a generic way to create ordered linked lists of network addrs
        netlabel: Replace protocol/NetLabel linking with refrerence counts
        smack: Fix missing calls to netlbl_skbuff_err()
        selinux: Fix missing calls to netlbl_skbuff_err()
        selinux: Fix a problem in security_netlbl_sid_to_secattr()
        selinux: Better local/forward check in selinux_ip_postroute()
        ...
      8d71ff0b
    • L
      Merge git://git.infradead.org/users/dwmw2/random-2.6 · 244dc4e5
      Linus Torvalds 提交于
      * git://git.infradead.org/users/dwmw2/random-2.6:
        Fix autoloading of MacBook Pro backlight driver.
        Automatic MODULE_ALIAS() for DMI match tables.
        Remove asm/a.out.h files for all architectures without a.out support.
        Introduce HAVE_AOUT symbol to remove hard-coded arch list for BINFMT_AOUT
        Remove redundant CONFIG_ARCH_SUPPORTS_AOUT
        S390: Update comments about why we don't use <asm-generic/statfs.h>
        SPARC: Use <asm-generic/statfs.h>
        PowerPC: Use <asm-generic/statfs.h>
        PARISC: Use <asm-generic/statfs.h>
        x86_64: Use <asm-generic/statfs.h>
        IA64: Use <asm-generic/statfs.h>
        ARM: Use <asm-generic/statfs.h>
        Make <asm-generic/statfs.h> suitable for 64-bit platforms.
        Define and use PCI_DEVICE_ID_MARVELL_88ALP01_CCIC for CAFÉ camera driver
        [MTD] [NAND] Define and use PCI_DEVICE_ID_MARVELL_88ALP01_NAND for CAFÉ
        Use PCI_DEVICE_ID_88ALP01 for CAFÉ chip, rather than PCI_DEVICE_ID_CAFE.
        EFS: Don't set f_fsid in statfs().
      244dc4e5
    • L
      Merge phase #5 (misc) of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip · e7f2f991
      Linus Torvalds 提交于
      Merges oprofile, timers/hpet, x86/traps, x86/time, and x86/core misc items.
      
      * 'x86-core-v4-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (132 commits)
        x86: change early_ioremap to use slots instead of nesting
        x86: adjust dependencies for CONFIG_X86_CMOV
        dumpstack: x86: various small unification steps, fix
        x86: remove additional_cpus
        x86: remove additional_cpus configurability
        x86: improve UP kernel when CPU-hotplug and SMP is enabled
        dumpstack: x86: various small unification steps
        dumpstack: i386: make kstack= an early boot-param and add oops=panic
        dumpstack: x86: use log_lvl and unify trace formatting
        dumptrace: x86: consistently include loglevel, print stack switch
        dumpstack: x86: add "end" parameter to valid_stack_ptr and print_context_stack
        dumpstack: x86: make printk_address equal
        dumpstack: x86: move die_nmi to dumpstack_32.c
        traps: x86: finalize unification of traps.c
        traps: x86: make traps_32.c and traps_64.c equal
        traps: x86: various noop-changes preparing for unification of traps_xx.c
        traps: x86_64: use task_pid_nr(tsk) instead of tsk->pid in do_general_protection
        traps: i386: expand clear_mem_error and remove from mach_traps.h
        traps: x86_64: make io_check_error equal to the one on i386
        traps: i386: use preempt_conditional_sti/cli in do_int3
        ...
      e7f2f991
    • A
      tty: rename the remaining oddly named n_tty functions · 11a96d18
      Alan Cox 提交于
      Original idea for this from a patch by Rodolfo Giometti which merges various
      bits of PPS support
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      11a96d18
    • A
      fs3270: Correct error returns · a18992d4
      Alan Cox 提交于
      Drop the kernel lock further and also correct cases where we set rc to an
      error code, and then return 0
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a18992d4
    • A
      fs3270: remove extra locks · a90610e5
      Alan Cox 提交于
      get_current_tty now does internal locking and returns a referenced object,
      thus our use of tty_mutex here can go away.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a90610e5
    • J
      tty: tty_io.c shadows sparse fix · 402fda92
      Jason Wessel 提交于
      drivers/char/tty_io.c:1413:17: warning: symbol 'buf' shadows an earlier one
      drivers/char/tty_io.c:1379:20: originally declared here
      Signed-off-by: NJason Wessel <jason.wessel@windriver.com>
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      402fda92
    • D
      serial: fix device name reporting when minor space is shared between drivers · 8440838b
      David S. Miller 提交于
      The multiple drivers share the minor space occupied by a particular major
      number, the actual index within the device name's space is indicated by
      the tty_driver->name_base + uart_port->line
      
      Another usable formula is (uart_driver->minor - MINOR_BASE) + port->line
      
      Use those to print the device names properly in such situations in
      serial_core.c and 8250.c
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8440838b
    • A
      applicom: Fix an unchecked user ioctl range and an error return · a7be18d4
      Alan Cox 提交于
      Closes bug #11408 by checking the card index range for command 0
      Fixes the ioctl to return ENOTTY which is correct for unknown ioctls
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a7be18d4
    • A
      tty: Minor tidyups and document fixes for n_tty · 17b82060
      Alan Cox 提交于
      Remove/fix some bogus NULL checks, comment some locking etc
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      17b82060
    • A
      tty: Remove lots of NULL checks · 51383f69
      Alan Cox 提交于
      Many tty drivers contain 'can't happen' checks against NULL pointers passed
      in by the tty layer. These have never been possible to occur. Even more
      importantly if they ever do occur we want to know as it would be a serious
      bug.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      51383f69
    • A
      tty: fix up gigaset a bit · ea1afd25
      Alan Cox 提交于
      Stephen's fixes reminded me that gigaset is still rather broken so fix it up
      a bit
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      ea1afd25
    • S
      tty: Fallout from tty-move-canon-specials · 53e86317
      Stephen Rothwell 提交于
      Today's linux-next build (x86_64 allmodconfig) failed like this:
      
      /drivers/char/tty_ioctl.c: In function 'change_termios':
      drivers/isdn/capi/capi.c:1234: error: implicit declaration of function 'n_tty_ioctl'
      drivers/isdn/gigaset/ser-gigaset.c: In function 'gigaset_tty_ioctl':
      drivers/isdn/gigaset/ser-gigaset.c:648: error: implicit declaration of function 'n_tty_ioctl'
      
      Introduced by commit 686b5e4aea05a80e370dc931b7f4a8d03c80da54
      ("tty-move-canon-specials").  I added the following patch (which may not
      be correct).
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      53e86317
    • A
      tty: some ICANON magic is in the wrong places · 47afa7a5
      Alan Cox 提交于
      Move the set up on ldisc change into the ldisc
      Move the INQ/OUTQ cases into the driver not in shared ioctl code where it
      gives bogus answers for other ldisc values
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      47afa7a5
    • A
      tty: simplify ktermios allocation · fe6e29fd
      Alan Cox 提交于
      Copy the simplification from the pty unix98 special case to the generic one.
      This allows us to kill off driver->termios_locked entirely which is nice. We
      have to whack bits of the cris driver as it meddles in places it shouldn't
      providing its own arrays that were never used anyway.
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fe6e29fd
    • A
      pty: simplify unix98 allocation · 8dff04ea
      Alan Cox 提交于
      We need both termios and termios_locked so allocate them as one
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8dff04ea
    • A
      pty: Fix allocation failure double free · 335adde6
      Alan Cox 提交于
      The updating and moving around of the pty code added a bug where both the
      helper and caller free the main tty struct (the pty driver must free the
      o_tty pair itself however).
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      335adde6
    • A
      pty: Coding style and polish · fe9cd962
      Alan Cox 提交于
      We've done the heavy lifting now its time to mop up a bit
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fe9cd962
    • S
      Simplify devpts_pty_kill · a6f37daa
      Sukadev Bhattiprolu 提交于
      When creating a new pty, save the pty's inode in the tty->driver_data.
      Use this inode in pty_kill() to identify the devpts instance. Since
      we now have the inode for the pty, we can skip get_node() lookup and
      remove the unused get_node().
      
      TODO:
      	- check if the mutex_lock is needed in pty_kill().
      Signed-off-by: NSukadev Bhattiprolu <sukadev@us.ibm.com>
      Signed-off-by: NAlan Cox <alan@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a6f37daa