1. 30 11月, 2015 2 次提交
  2. 29 11月, 2015 9 次提交
    • D
      target/stat: print full t10_wwn.model buffer · 8f903539
      David Disseldorp 提交于
      Cut 'n paste error saw it only process sizeof(t10_wwn.vendor) characters.
      Signed-off-by: NDavid Disseldorp <ddiss@suse.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      8f903539
    • J
      target: fix COMPARE_AND_WRITE non zero SGL offset data corruption · d94e5a61
      Jan Engelhardt 提交于
      target_core_sbc's compare_and_write functionality suffers from taking
      data at the wrong memory location when writing a CAW request to disk
      when a SGL offset is non-zero.
      
      This can happen with loopback and vhost-scsi fabric drivers when
      SCF_PASSTHROUGH_SG_TO_MEM_NOALLOC is used to map existing user-space
      SGL memory into COMPARE_AND_WRITE READ/WRITE payload buffers.
      
      Given the following sample LIO subtopology,
      
      % targetcli ls /loopback/
      o- loopback ................................. [1 Target]
        o- naa.6001405ebb8df14a ....... [naa.60014059143ed2b3]
          o- luns ................................... [2 LUNs]
            o- lun0 ................ [iblock/ram0 (/dev/ram0)]
            o- lun1 ................ [iblock/ram1 (/dev/ram1)]
      % lsscsi -g
      [3:0:1:0]    disk    LIO-ORG  IBLOCK           4.0   /dev/sdc   /dev/sg3
      [3:0:1:1]    disk    LIO-ORG  IBLOCK           4.0   /dev/sdd   /dev/sg4
      
      the following bug can be observed in Linux 4.3 and 4.4~rc1:
      
      % perl -e 'print chr$_ for 0..255,reverse 0..255' >rand
      % perl -e 'print "\0" x 512' >zero
      % cat rand >/dev/sdd
      % sg_compare_and_write -i rand -D zero --lba 0 /dev/sdd
      % sg_compare_and_write -i zero -D rand --lba 0 /dev/sdd
      Miscompare reported
      % hexdump -Cn 512 /dev/sdd
      00000000  0f 0e 0d 0c 0b 0a 09 08  07 06 05 04 03 02 01 00
      00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00
      *
      00000200
      
      Rather than writing all-zeroes as instructed with the -D file, it
      corrupts the data in the sector by splicing some of the original
      bytes in. The page of the first entry of cmd->t_data_sg includes the
      CDB, and sg->offset is set to a position past the CDB. I presume that
      sg->offset is also the right choice to use for subsequent sglist
      members.
      Signed-off-by: NJan Engelhardt <jengelh@netitwork.de>
      Tested-by: NDouglas Gilbert <dgilbert@interlog.com>
      Cc: <stable@vger.kernel.org> # v3.12+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      d94e5a61
    • H
      qla2xxx: Fix regression introduced by target configFS changes · 3786dc45
      Himanshu Madhani 提交于
      this patch fixes following regression
      
       # targetcli
       [Errno 13] Permission denied: '/sys/kernel/config/target/qla2xxx/21:00:00:0e:1e:08:c7:20/tpgt_1/enable'
      
      Fixes: 2eafd729 ("target: use per-attribute show and store methods")
      Signed-off-by: NHimanshu Madhani <himanshu.madhani@qlogic.com>
      Signed-off-by: NGiridhar Malavali <giridhar.malavali@qlogic.com>
      Reviewed-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      3786dc45
    • B
      target: Invoke release_cmd() callback without holding a spinlock · 9ff9d15e
      Bart Van Assche 提交于
      This patch fixes the following kernel warning because it avoids that
      IRQs are disabled while ft_release_cmd() is invoked (fc_seq_set_resp()
      invokes spin_unlock_bh()):
      
      WARNING: CPU: 3 PID: 117 at kernel/softirq.c:150 __local_bh_enable_ip+0xaa/0x110()
      Call Trace:
       [<ffffffff814f71eb>] dump_stack+0x4f/0x7b
       [<ffffffff8105e56a>] warn_slowpath_common+0x8a/0xc0
       [<ffffffff8105e65a>] warn_slowpath_null+0x1a/0x20
       [<ffffffff81062b2a>] __local_bh_enable_ip+0xaa/0x110
       [<ffffffff814ff229>] _raw_spin_unlock_bh+0x39/0x40
       [<ffffffffa03a7f94>] fc_seq_set_resp+0xe4/0x100 [libfc]
       [<ffffffffa02e604a>] ft_free_cmd+0x4a/0x90 [tcm_fc]
       [<ffffffffa02e6972>] ft_release_cmd+0x12/0x20 [tcm_fc]
       [<ffffffffa042bd66>] target_release_cmd_kref+0x56/0x90 [target_core_mod]
       [<ffffffffa042caf0>] target_put_sess_cmd+0xc0/0x110 [target_core_mod]
       [<ffffffffa042cb81>] transport_release_cmd+0x41/0x70 [target_core_mod]
       [<ffffffffa042d975>] transport_generic_free_cmd+0x35/0x420 [target_core_mod]
      Signed-off-by: NBart Van Assche <bart.vanassche@sandisk.com>
      Acked-by: NJoern Engel <joern@logfs.org>
      Reviewed-by: NAndy Grover <agrover@redhat.com>
      Cc: Christoph Hellwig <hch@lst.de>
      Cc: Hannes Reinecke <hare@suse.de>
      Cc: Sagi Grimberg <sagig@mellanox.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      9ff9d15e
    • N
      target: Fix race for SCF_COMPARE_AND_WRITE_POST checking · 057085e5
      Nicholas Bellinger 提交于
      This patch addresses a race + use after free where the first
      stage of COMPARE_AND_WRITE in compare_and_write_callback()
      is rescheduled after the backend sends the secondary WRITE,
      resulting in second stage compare_and_write_post() callback
      completing in target_complete_ok_work() before the first
      can return.
      
      Because current code depends on checking se_cmd->se_cmd_flags
      after return from se_cmd->transport_complete_callback(),
      this results in first stage having SCF_COMPARE_AND_WRITE_POST
      set, which incorrectly falls through into second stage CAW
      processing code, eventually triggering a NULL pointer
      dereference due to use after free.
      
      To address this bug, pass in a new *post_ret parameter into
      se_cmd->transport_complete_callback(), and depend upon this
      value instead of ->se_cmd_flags to determine when to return
      or fall through into ->queue_status() code for CAW.
      
      Cc: Sagi Grimberg <sagig@mellanox.com>
      Cc: <stable@vger.kernel.org> # v3.12+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      057085e5
    • N
      iscsi-target: Fix rx_login_comp hang after login failure · ca82c2bd
      Nicholas Bellinger 提交于
      This patch addresses a case where iscsi_target_do_tx_login_io()
      fails sending the last login response PDU, after the RX/TX
      threads have already been started.
      
      The case centers around iscsi_target_rx_thread() not invoking
      allow_signal(SIGINT) before the send_sig(SIGINT, ...) occurs
      from the failure path, resulting in RX thread hanging
      indefinately on iscsi_conn->rx_login_comp.
      
      Note this bug is a regression introduced by:
      
        commit e5419865
        Author: Nicholas Bellinger <nab@linux-iscsi.org>
        Date:   Wed Jul 22 23:14:19 2015 -0700
      
            iscsi-target: Fix iscsit_start_kthreads failure OOPs
      
      To address this bug, complete ->rx_login_complete for good
      measure in the failure path, and immediately return from
      RX thread context if connection state did not actually reach
      full feature phase (TARG_CONN_STATE_LOGGED_IN).
      
      Cc: Sagi Grimberg <sagig@mellanox.com>
      Cc: <stable@vger.kernel.org> # v3.10+
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      ca82c2bd
    • L
      iscsi-target: return -ENOMEM instead of -1 in case of failed kmalloc() · 82a819e8
      Luis de Bethencourt 提交于
      Smatch complains about returning hard coded error codes, silence this
      warning.
      
      drivers/target/iscsi/iscsi_target_parameters.c:211
         iscsi_create_default_params() warn: returning -1 instead of -ENOMEM is sloppy
      Signed-off-by: NLuis de Bethencourt <luisbg@osg.samsung.com>
      Reviewed-by: NSagi Grimberg <sagig@mellanox.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      82a819e8
    • A
      target/user: Do not set unused fields in tcmu_ops · 6ba4bd29
      Andy Grover 提交于
      TCMU sets TRANSPORT_FLAG_PASSTHROUGH, so INQUIRY commands will not be
      emulated by LIO but passed up to userspace. Therefore TCMU should not
      set these, just like pscsi doesn't.
      Signed-off-by: NAndy Grover <agrover@redhat.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      6ba4bd29
    • A
      target/user: Fix time calc in expired cmd processing · 611e2267
      Andy Grover 提交于
      Reversed arguments meant that we were doing nothing for cmds whose deadline
      had passed.
      Signed-off-by: NAndy Grover <agrover@redhat.com>
      Signed-off-by: NNicholas Bellinger <nab@linux-iscsi.org>
      611e2267
  3. 27 11月, 2015 4 次提交
  4. 26 11月, 2015 3 次提交
  5. 25 11月, 2015 18 次提交
  6. 24 11月, 2015 4 次提交
    • T
      imx: thermal: use CPU temperature grade info for thresholds · a2291bad
      Tim Harvey 提交于
      The IMX6Q/IMX6DL SoC's have a 2-bit temperature grade stored in OTP which
      is valid for all IMX6 SoC's (despite the fact that the IMXSDLRM and
      IMXSXRM do not document this - this has been proven via tests as well as
      verified by Freescale FAE).
      
      Instead of assuming a fixed 85C for passive cooling threshold and 105C for
      critical use the thermal grade for these configurations.
      
      We will set the critical to maxT - 5C and passive to maxT - 10C.
      
      Cc: Anson Huang <b20788@freescale.com>
      Cc: Fabio Estevam <fabio.estevam@freescale.com>
      Acked-by: NShawn Guo <shawn.guo@linaro.org>
      Acked-by: NJon Nettleton <jon@solid-run.com>
      Signed-off-by: NTim Harvey <tharvey@gateworks.com>
      ----
      v3:
       - rebase against linux-soc-thermal.git
       - added ack's from Shawn and Jon
      v2:
       - remove check for IMX6Q and update comments: The OTP values have been tested
         on IMX6SOLO, IMX6DUALLITE, and IMX6SX and Freescale FAE has shared data with
         me that the OTP settings are the same and that the reference manuals will
         reflect this in their next updates.
       - set critical to max - 5C
       - set passive to max - 10C
       - display max temp in info
       - do not allow passive to be set above critical
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      a2291bad
    • A
      Revert "thermal: qcom_spmi: allow compile test" · e4217468
      Arnd Bergmann 提交于
      This just caused build errors:
      
      warning: (QCOM_SPMI_TEMP_ALARM) selects REGMAP_SPMI which has unmet direct dependencies (SPMI)
      drivers/built-in.o: In function `regmap_spmi_ext_gather_write':
      :(.text+0x609b0): undefined reference to `spmi_ext_register_write'
      :(.text+0x609f0): undefined reference to `spmi_ext_register_writel'
      
      While it's generally a good idea to allow compile testing, in this
      case, it just doesn't work, so reverting the patch that
      introduced the compile-test variant seems the most appropriate
      solution.
      
      Note that SPMI also has a 'depends on ARCH_QCOM || COMPILE_TEST'
      statement, so we should be able to enable SPMI on all architectures
      for compile testing already.
      Signed-off-by: NArnd Bergmann <arnd@arndb.de>
      Fixes: cb7fb4d3 ("thermal: qcom_spmi: allow compile test")
      Signed-off-by: NEduardo Valentin <edubezval@gmail.com>
      e4217468
    • P
      cpufreq: SCPI: Depend on SCPI clk driver · 73124ced
      Punit Agrawal 提交于
      The SCPI clk driver registers the virtual cpufreq device that kicks off
      initialisation of the SCPI cpufreq driver. Also, clk_get() will fail for
      the cpufreq driver if the SCPI clk driver is missing.
      
      Fix this by making the SCPI cpufreq driver explicitly depend on the SCPI
      clk driver.
      
      Fixes: 8def3103 (cpufreq: arm_big_little: add SCPI interface driver)
      Signed-off-by: NPunit Agrawal <punit.agrawal@arm.com>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      73124ced
    • P
      cpufreq: intel_pstate: Fix limits->max_perf rounding error · 785ee278
      Prarit Bhargava 提交于
      A rounding error was found in the calculation of limits->max_perf
      in intel_pstate_set_policy(), which is used to calculate the max and min
      pstate values in intel_pstate_get_min_max().  In that code,
      limits->max_perf is truncated to 2 hex digits such that, for example,
      0x169 was incorrectly calculated to 0x16 instead of 0x17.  This resulted in
      the pstate being set one level too low.  This patch rounds the value of
      limits->max_perf up instead of down so that the correct max pstate can
      be reached.
      Signed-off-by: NPrarit Bhargava <prarit@redhat.com>
      Acked-by: NSrinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
      Acked-by: NViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      785ee278