1. 29 Aug, 2017 5 commits
  2. 25 Aug, 2017 2 commits
  3. 24 Aug, 2017 2 commits
    • Bjorn Andersson's avatar
      of/device: Fix of_device_get_modalias() buffer handling · 8c2a75e5
      Bjorn Andersson authored
      of_device_request_module() calls of_device_get_modalias() with "len" 0,
      to calculate the size of the buffer needed to store the result, but due
      to integer promotion the ssize_t "len" will be compared as unsigned with
      strlen(compat) and the loop will generally never break. This results in
      a call to snprintf() with a negative len, which triggers below warning,
      followed by a dereference of a invalid pointer:
      
        [    3.060067] WARNING: CPU: 0 PID: 51 at lib/vsprintf.c:2122 vsnprintf+0x348/0x6d8
        ...
        [    3.060301] [<ffffff800891ede8>] vsnprintf+0x348/0x6d8
        [    3.060308] [<ffffff800891f248>] snprintf+0x48/0x50
        [    3.060316] [<ffffff80086a7c80>] of_device_get_modalias+0x108/0x160
        [    3.060322] [<ffffff80086a7cf8>] of_device_request_module+0x20/0x88
        ...
      
      Further more of_device_get_modalias() is supposed to return the number
      of bytes needed to store the entire modalias, so the loop needs to
      continue accumulate the total size even though the buffer is full.
      
      Finally the function is not expected to ensure space for the NUL, nor
      include it in the returned size, so only 1 should be added to the length
      of "compat" in the loop (to account for the character 'C').
      
      Fixes: bc575064 ("of/device: use of_property_for_each_string to parse compatible strings")
      Cc: Rob Herring <robh@kernel.org>
      Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      8c2a75e5
    • Bjorn Andersson's avatar
      of/device: Prevent buffer overflow in of_device_modalias() · 08ab58d9
      Bjorn Andersson authored
      As of_device_get_modalias() returns the number of bytes that would have
      been written to the target string, regardless of how much did fit in the
      buffer, it's possible that the returned index points beyond the buffer
      passed to of_device_modalias() - causing memory beyond the buffer to be
      null terminated.
      
      Fixes: 0634c295 ("of: Add function for generating a DT modalias with a newline")
      Cc: Rob Herring <robh@kernel.org>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      08ab58d9
  4. 23 Aug, 2017 2 commits
  5. 21 Aug, 2017 4 commits
  6. 17 Aug, 2017 1 commit
  7. 14 Aug, 2017 1 commit
  8. 10 Aug, 2017 1 commit
  9. 09 Aug, 2017 1 commit
  10. 03 Aug, 2017 1 commit
  11. 01 Aug, 2017 3 commits
  12. 24 Jul, 2017 6 commits
  13. 21 Jul, 2017 3 commits
  14. 20 Jul, 2017 3 commits
    • Frank Rowand's avatar
      of: overlay: add overlay symbols to live device tree · d1651b03
      Frank Rowand authored
      Add overlay __symbols__ properties to live tree when an overlay
      is added to the live tree so that the symbols are available to
      subsequent overlays.
      
      Expected test result is new __symbols__ entries for labels from
      the overlay after this commit.
      
      Before this commit:
      
         Console error message near end of unittest:
            ### dt-test ### FAIL of_unittest_overlay_high_level():2296 Adding overlay 'overlay_bad_symbol' failed
            ### dt-test ### end of unittest - 190 passed, 1 failed
      
         The new unittest "fails" because the expected result of loading the
         new overlay is an error instead of success.
      
         $ # node hvac-medium-2 exists because the overlay loaded
         $ # since the duplicate symbol was not detected
         $ cd /proc/device-tree/testcase-data-2/substation@100/
         $ ls
         compatible     hvac-medium-2  motor-8        reg
         hvac-large-1   linux,phandle  name           status
         hvac-medium-1  motor-1        phandle
      
         $ cd /proc/device-tree/__symbols__/
         $ ls
         electric_1   lights_1     name         rides_1      spin_ctrl_2
         hvac_1       lights_2     retail_1     spin_ctrl_1
      
      After this commit:
      
         Previous console error message no longer occurs, but expected error
         occurs:
            OF: overlay: Failed to apply prop @/__symbols__/hvac_1
            OF: overlay: apply failed '/__symbols__'
            ### dt-test ### end of unittest - 191 passed, 0 failed
      
         $ # node hvac-medium-2 does not exist because the overlay
         $ # properly failed to load due to the duplicate symbol
         $ cd /proc/device-tree/testcase-data-2/substation@100/
         $ ls
         compatible     hvac-medium-1  motor-1        name           reg
         hvac-large-1   linux,phandle  motor-8        phandle        status
      
         $ cd /proc/device-tree/__symbols__/
         $ ls
         electric_1      lights_1        retail_1        ride_200_right  spin_ctrl_2
         hvac_1          lights_2        ride_200        rides_1
         hvac_2          name            ride_200_left   spin_ctrl_1
         $ cat ride_200; echo
         /testcase-data-2/fairway-1/ride@200
         $ cat ride_200_left ; echo
         /testcase-data-2/fairway-1/ride@200/track@10
         $ cat ride_200_right ; echo
         /testcase-data-2/fairway-1/ride@200/track@20
      Signed-off-by: default avatarFrank Rowand <frank.rowand@sony.com>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      d1651b03
    • Frank Rowand's avatar
      of: overlay: correctly apply overlay node with unit-address · c1cd1e01
      Frank Rowand authored
      Correct existing node name detection when overlay node name has
      a unit-address.
      
      Expected test result is overlay will update the nodes and properties
      for /testcase-data-2/fairway-1/ride@100/ after this commit.
      
      Before this commit:
      
         Console error message near end of unittest:
            OF: Duplicate name in fairway-1, renamed to "ride@100#1"
      
         $ cd /proc/device-tree/testcase-data-2/fairway-1/
         $ # extra node: ride@100#1
         $ ls
         #address-cells  linux,phandle   phandle         ride@200
         #size-cells     name            ride@100        status
         compatible      orientation     ride@100#1
         $ cd /proc/device-tree/testcase-data-2/fairway-1/ride@100/
         $ ls track@30/incline-up
         ls: track@30/incline-up: No such file or directory
         $ ls track@40/incline-up
         ls: track@40/incline-up: No such file or directory
      
      After this commit:
      
         Console error message no longer occurs
      
         $ cd /proc/device-tree/testcase-data-2/fairway-1/
         $ # no extra node: ride@100#1
         $ ls
         #address-cells  compatible      name            phandle         ride@200
         #size-cells     linux,phandle   orientation     ride@100        status
         $ cd /proc/device-tree/testcase-data-2/fairway-1/ride@100/
         $ ls track@30/incline-up
         track@30/incline-up
         $ ls track@40/incline-up
         track@40/incline-up
      Signed-off-by: default avatarFrank Rowand <frank.rowand@sony.com>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      c1cd1e01
    • Frank Rowand's avatar
      of: overlay: add overlay unittest data for node names and symbols · 60a0004c
      Frank Rowand authored
      Add nodes and properties to overlay_base and overlay dts files to
      test for
         - incorrect existing node name detection when overlay node name
           has a unit-address
         - adding overlay __symbols__ properties to live tree when an
           overlay is added to the live tree
      
      The following console messages will appear near the end of unittest
      until the code errors are corrected:
      
         OF: Duplicate name in fairway-1, renamed to "ride@100#1"
      
         ### dt-test ### FAIL of_unittest_overlay_high_level():2296 Adding overlay 'overlay_bad_symbol' failed
      
         ### dt-test ### end of unittest - 190 passed, 1 failed
      Signed-off-by: default avatarFrank Rowand <frank.rowand@sony.com>
      Signed-off-by: default avatarRob Herring <robh@kernel.org>
      60a0004c
  15. 18 Jul, 2017 1 commit
  16. 17 Jul, 2017 4 commits