1. 01 6月, 2016 11 次提交
  2. 30 5月, 2016 2 次提交
  3. 28 5月, 2016 1 次提交
    • A
      remove lots of IS_ERR_VALUE abuses · 287980e4
      Arnd Bergmann 提交于
      Most users of IS_ERR_VALUE() in the kernel are wrong, as they
      pass an 'int' into a function that takes an 'unsigned long'
      argument. This happens to work because the type is sign-extended
      on 64-bit architectures before it gets converted into an
      unsigned type.
      
      However, anything that passes an 'unsigned short' or 'unsigned int'
      argument into IS_ERR_VALUE() is guaranteed to be broken, as are
      8-bit integers and types that are wider than 'unsigned long'.
      
      Andrzej Hajda has already fixed a lot of the worst abusers that
      were causing actual bugs, but it would be nice to prevent any
      users that are not passing 'unsigned long' arguments.
      
      This patch changes all users of IS_ERR_VALUE() that I could find
      on 32-bit ARM randconfig builds and x86 allmodconfig. For the
      moment, this doesn't change the definition of IS_ERR_VALUE()
      because there are probably still architecture specific users
      elsewhere.
      
      Almost all the warnings I got are for files that are better off
      using 'if (err)' or 'if (err < 0)'.
      The only legitimate user I could find that we get a warning for
      is the (32-bit only) freescale fman driver, so I did not remove
      the IS_ERR_VALUE() there but changed the type to 'unsigned long'.
      For 9pfs, I just worked around one user whose calling conventions
      are so obscure that I did not dare change the behavior.
      
      I was using this definition for testing:
      
       #define IS_ERR_VALUE(x) ((unsigned long*)NULL == (typeof (x)*)NULL && \
             unlikely((unsigned long long)(x) >= (unsigned long long)(typeof(x))-MAX_ERRNO))
      
      which ends up making all 16-bit or wider types work correctly with
      the most plausible interpretation of what IS_ERR_VALUE() was supposed
      to return according to its users, but also causes a compile-time
      warning for any users that do not pass an 'unsigned long' argument.
      
      I suggested this approach earlier this year, but back then we ended
      up deciding to just fix the users that are obviously broken. After
      the initial warning that caused me to get involved in the discussion
      (fs/gfs2/dir.c) showed up again in the mainline kernel, Linus
      asked me to send the whole thing again.
      
      [ Updated the 9p parts as per Al Viro  - Linus ]
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Cc: Andrzej Hajda <a.hajda@samsung.com>
      Cc: Andrew Morton <akpm@linux-foundation.org>
      Link: https://lkml.org/lkml/2016/1/7/363
      Link: https://lkml.org/lkml/2016/5/27/486
      Acked-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> # For nvmem part
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      287980e4
  4. 25 5月, 2016 1 次提交
  5. 24 5月, 2016 2 次提交
  6. 20 5月, 2016 1 次提交
  7. 19 5月, 2016 2 次提交
  8. 18 5月, 2016 2 次提交
    • T
      ALSA: firewire-lib: change a member of event structure to suppress sparse wanings to bool type · 17e1717c
      Takashi Sakamoto 提交于
      Commit a9c4284b ("ALSA: firewire-lib: add context information to
      tracepoints") adds new members to tracepoint events of this module, to
      represent context information. One of the members is bool type and
      this causes sparse warnings.
      
      16:1: warning: expression using sizeof bool
      60:1: warning: expression using sizeof bool
      16:1: warning: odd constant _Bool cast (ffffffffffffffff becomes 1)
      60:1: warning: odd constant _Bool cast (ffffffffffffffff becomes 1)
      
      This commit suppresses the warnings, by changing type of the member
      to 'unsigned int'. Additionally, this commit applies '!!' idiom to
      get 0/1 from 'in_interrupt()'.
      
      Fixes: a9c4284b ("ALSA: firewire-lib: add context information to tracepoints")
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      17e1717c
    • M
      sound: oss: Use setup_timer and mod_timer. · c7c5856b
      Muhammad Falak R Wani 提交于
      The function setup_timer combines the initialization of a timer with the
      initialization of the timer's function and data fields. The mulitiline
      code for timer initialization is now replaced with function setup_timer.
      
      Also, quoting the mod_timer() function comment:
      -> mod_timer() is a more efficient way to update the expire field of an
         active timer (if the timer is inactive it will be activated).
      
      Use setup_timer() and mod_timer() to setup and arm a timer, making the
      code compact and aid readablity.
      Signed-off-by: NMuhammad Falak R Wani <falakreyaz@gmail.com>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      c7c5856b
  9. 17 5月, 2016 1 次提交
  10. 13 5月, 2016 12 次提交
  11. 12 5月, 2016 5 次提交
    • S
      rcar: src: skip disabled-SRC nodes · de196515
      Sergei Shtylyov 提交于
      The current device tree representation of the R-Car Sample Rate Converters
      (SRC) assumes that they are numbered consecutively, starting from 0. Alas,
      this  is not  the case with the R8A7794 SoC where SRC0 isn't present.  In
      order to keep the existing  device trees working, I'm suggesting to use a
      disabled node for SRC0.  Teach the SRC probe  to just skip disabled nodes.
      Signed-off-by: NSergei Shtylyov <sergei.shtylyov@cogentembedded.com>
      Acked-by: NKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      de196515
    • V
      ASoC: rt298: Add DMI match for Broxton-P reference platform · b9c17f13
      Vinod Koul 提交于
      Broxton-P reference platform also uses combo jack for audio
      connector so we need to set codec pdata to use this based on DMI
      match for this board.
      Signed-off-by: NRamesh Babu <ramesh.babu@intel.com>
      Signed-off-by: NSenthilnathan Veppur <senthilnathanx.veppur@intel.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      Acked-by: NBard Liao <bardliao@realtek.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      b9c17f13
    • V
      ASoC: rt298: fix null deref on acpi driver data · bb7cb54b
      Vinod Koul 提交于
      ACPI driver data can be NULL so we need to check that before
      dereference the driver data.
      Signed-off-by: NSenthilnathan Veppur <senthilnathanx.veppur@intel.com>
      Signed-off-by: NVinod Koul <vinod.koul@intel.com>
      Acked-by: NBard Liao <bardliao@realtek.com>
      Signed-off-by: NMark Brown <broonie@kernel.org>
      bb7cb54b
    • T
      ALSA: firewire-lib: drop skip argument from helper functions to queue a packet · ff38e0c7
      Takashi Sakamoto 提交于
      On most of audio and music units on IEEE 1394 bus which ALSA firewire stack
      supports (or plans to support), CIP with two quadlets header is used.
      Thus, there's no cases to queue packets with blank payload. If such packets
      are going to be queued, it means that they're for skips of the cycle.
      
      This commit simplifies helper functions to queue a packet.
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Acked-by: NClemens Ladisch <clemens@ladisch.de>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      ff38e0c7
    • T
      ALSA: firewire-lib: add context information to tracepoints · a9c4284b
      Takashi Sakamoto 提交于
      In current implementation, packet processing is done in both of software
      IRQ contexts of IR/IT contexts and process contexts.
      
      This is usual interrupt handling of IR/IT context for 1394 OHCI.
      (in hardware IRQ context)
      irq_handler() (drivers/firewire/ohci.c)
      ->tasklet_schedule()
      (in software IRQ context)
      handle_it_packet() or handle_ir_packet_per_buffer() (drivers/firewire/ohci.c)
      ->flush_iso_completions()
        ->struct fw_iso_context.callback.sc()
        = out_stream_callback() or in_stream_callback()
      
      However, we have another chance for packet processing. It's done in PCM
      frame handling via ALSA PCM interfaces.
      (in process context)
      ioctl(i.e. SNDRV_PCM_IOCTL_HWSYNC)
      ->snd_pcm_hwsync() (sound/core/pcm_native.c)
        ->snd_pcm_update_hw_ptr() (sound/core/pcm_lib.c)
          ->snd_pcm_update_hw_ptr0()
            ->struct snd_pcm_ops.pointer()
            = amdtp_stream_pcm_pointer()
              ->fw_iso_context_flush_completions() (drivers/firewire/core-iso.c)
                ->struct fw_card_driver.flush_iso_completions()
                = ohci_flush_iso_completions() (drivers/firewire/ohci.c)
                  ->flush_iso_completions()
                    ->struct fw_iso_context.callback.sc()
                    = out_stream_callback() or in_stream_callback()
      
      This design is for a better granularity of PCM pointer. When ioctl(2) is
      executed with some commands for ALSA PCM interface, queued packets are
      handled at first. Then, the latest number of handled PCM frames is
      reported. The number can represent PCM frames transferred in most near
      isochronous cycle.
      
      Current tracepoints include no information to distinguish running contexts.
      When tracing the interval of software IRQ context, this is not good.
      
      This commit adds more information for current context. Additionally, the
      index of packet processed in one context is added in a case that packet
      processing is executed in continuous context of the same kind,
      
      As a result, the output includes 11 fields with additional two fields
      to commit 0c95c1d6 ("ALSA: firewire-lib: add tracepoints to dump a part
      of isochronous packet data"):
      17131.9186: out_packet: 07 7494 ffc0 ffc1 00 000700c0 9001a496 058 45 1 13
      17131.9186: out_packet: 07 7495 ffc0 ffc1 00 000700c8 9001ba00 058 46 1 14
      17131.9186: out_packet: 07 7496 ffc0 ffc1 00 000700d0 9001ffff 002 47 1 15
      17131.9189: out_packet: 07 7497 ffc0 ffc1 00 000700d0 9001d36a 058 00 0 00
      17131.9189: out_packet: 07 7498 ffc0 ffc1 00 000700d8 9001e8d4 058 01 0 01
      17131.9189: out_packet: 07 7499 ffc0 ffc1 00 000700e0 9001023e 058 02 0 00
      17131.9206: in_packet:  07 7447 ffc1 ffc0 01 3f070072 9001783d 058 32 1 00
      17131.9206: in_packet:  07 7448 ffc1 ffc0 01 3f070072 90ffffff 002 33 1 01
      17131.9206: in_packet:  07 7449 ffc1 ffc0 01 3f07007a 900191a8 058 34 1 02
      (Here, some common fields are omitted so that a line is within 80
      characters.)
      
      The legend is:
       - The second of cycle scheduled for the packet
       - The count of cycle scheduled for the packet
       - The ID of node as source (hex)
       - The ID of node as destination (hex)
       - The value of isochronous channel
       - The first quadlet of CIP header (hex)
       - The second quadlet of CIP header (hex)
       - The number of included quadlets
       - The index of packet in a buffer maintained by this module
       - 0 in process context, 1 in IRQ context
       - The index of packet processed in the context
      Signed-off-by: NTakashi Sakamoto <o-takashi@sakamocchi.jp>
      Signed-off-by: NTakashi Iwai <tiwai@suse.de>
      a9c4284b