19 Apr, 2020

1 commit

  • The current codebase makes use of the zero-length array language
    extension to the C90 standard, but the preferred mechanism to declare
    variable-length types such as these ones is a flexible array member[1][2],
    introduced in C99:

    struct foo {
    int stuff;
    struct boo array[];
    };

    By making use of the mechanism above, we will get a compiler warning
    in case the flexible array does not occur last in the structure, which
    will help us prevent some kind of undefined behavior bugs from being
    inadvertently introduced[3] to the codebase from now on.

    Also, notice that, dynamic memory allocations won't be affected by
    this change:

    "Flexible array members have incomplete type, and so the sizeof operator
    may not be applied. As a quirk of the original implementation of
    zero-length arrays, sizeof evaluates to zero."[1]

    This issue was found with the help of Coccinelle.

    [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
    [2] https://github.com/KSPP/linux/issues/21
    [3] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour")

    Signed-off-by: Gustavo A. R. Silva

    Gustavo A. R. Silva
     

31 May, 2019

1 commit

  • Based on 1 normalized pattern(s):

    this program is free software you can redistribute it and or modify
    it under the terms of the gnu general public license version 2 as
    published by the free software foundation this program is
    distributed in the hope that it will be useful but without any
    warranty without even the implied warranty of merchantability or
    fitness for a particular purpose see the gnu general public license
    for more details you should have received a copy of the gnu general
    public license along with this program if not write to the free
    software foundation inc 675 mass ave cambridge ma 02139 usa

    extracted by the scancode license scanner the SPDX license identifier

    GPL-2.0-only

    has been chosen to replace the boilerplate/reference in 44 file(s).

    Signed-off-by: Thomas Gleixner
    Reviewed-by: Allison Randal
    Reviewed-by: Steve Winslow
    Reviewed-by: Alexios Zavras
    Cc: linux-spdx@vger.kernel.org
    Link: https://lkml.kernel.org/r/20190528170025.980374610@linutronix.de
    Signed-off-by: Greg Kroah-Hartman

    Thomas Gleixner
     

12 Dec, 2015

1 commit

  • KASAN found that our additional element processing scripts drop off
    the end of the VPD page into unallocated space. The reason is that
    not every element has additional information but our traversal
    routines think they do, leading to them expecting far more additional
    information than is present. Fix this by adding a gate to the
    traversal routine so that it only processes elements that are expected
    to have additional information (list is in SES-2 section 6.1.13.1:
    Additional Element Status diagnostic page overview)

    Reported-by: Pavel Tikhomirov
    Tested-by: Pavel Tikhomirov
    Cc: stable@vger.kernel.org
    Signed-off-by: James Bottomley

    James Bottomley
     

09 Jan, 2015

4 commits

  • Add power_status to SES device slot, so we can power on/off the
    HDDs behind the enclosure.

    Check firmware status in ses_set_* before sending control pages to
    firmware.

    Signed-off-by: Song Liu
    Acked-by: Dan Williams
    Reviewed-by: Jens Axboe
    Cc: Hannes Reinecke
    Signed-off-by: Christoph Hellwig

    Song Liu
     
  • The name provided by firmware is in a vendor specific format, publish
    the slot number to have a reliable mechanism for identifying slots
    across firmware implementations. If the enclosure does not provide a
    slot number fallback to the component number which is guaranteed unique,
    and usually mirrors the slot number.

    Cleaned up the unused ses_component.desc in the process.

    Signed-off-by: Dan Williams
    Signed-off-by: Song Liu
    Reviewed-by: Jens Axboe
    Reviewed-by: Hannes Reinecke
    Signed-off-by: Christoph Hellwig

    Dan Williams
     
  • Export the NAA logical id for the enclosure. This is optionally
    available from the sas_transport_class, but it is really a property of
    the enclosure.

    Signed-off-by: Dan Williams
    Signed-off-by: Song Liu
    Reviewed-by: Jens Axboe
    Cc: Hannes Reinecke
    Signed-off-by: Christoph Hellwig

    Dan Williams
     
  • The slot and address fields have a small window of instability when
    userspace can read them before initialization. Separate
    enclosure_component
    allocation from registration.

    Signed-off-by: Dan Williams
    Signed-off-by: Song Liu
    Reviewed-by: Jens Axboe
    Cc: Hannes Reinecke
    Signed-off-by: Christoph Hellwig

    Dan Williams
     

10 Dec, 2009

1 commit

  • Based on patch originally by Jeff Mahoney

    enclosure_status is expected to be a NULL terminated array of strings
    but isn't actually NULL terminated. When writing an invalid value to
    /sys/class/enclosure/.../.../status, it goes off the end of the array
    and Oopses.

    Fix by making the assumption true and adding NULL at the end.

    Reported-by: Artur Wojcik
    Signed-off-by: James Bottomley

    James Bottomley
     

23 Aug, 2009

2 commits

  • Right at the moment, hot removal of a device within an enclosure does
    nothing (because the intf_remove only copes with enclosure removal not
    with component removal). Fix this by adding a function to remove the
    component. Also needed to fix the prototype of
    enclosure_remove_device, since we know the device we've removed but
    not the internal component number

    Signed-off-by: James Bottomley
    Signed-off-by: James Bottomley

    James Bottomley
     
  • In a situation either with expanders or with multiple enclosure
    devices, hot add doesn't always work. This is because we try to find
    a single enclosure device attached to the host. Fix this by looping
    over all enclosure devices attached to the host and also by making the
    find loop recognise that the enclosure devices may be expander remote
    (i.e. not parented by the host).

    Signed-off-by: James Bottomley
    Signed-off-by: James Bottomley

    James Bottomley
     

20 Apr, 2008

1 commit


08 Feb, 2008

1 commit