• Oscar Carter's avatar
    firewire: Remove function callback casts · ebe4560e
    Oscar Carter authored
    In 1394 OHCI specification, Isochronous Receive DMA context has several
    modes. One of mode is 'BufferFill' and Linux FireWire stack uses it to
    receive isochronous packets for multiple isochronous channel as
    FW_ISO_CONTEXT_RECEIVE_MULTICHANNEL.
    
    The mode is not used by in-kernel driver, while it's available for
    userspace. The character device driver in firewire-core includes
    cast of function callback for the mode since the type of callback
    function is different from the other modes. The case is inconvenient
    to effort of Control Flow Integrity builds due to
    -Wcast-function-type warning.
    
    This commit removes the cast. A static helper function is newly added
    to initialize isochronous context for the mode. The helper function
    arranges isochronous context to assign specific callback function
    after call of existent kernel API. It's noticeable that the number of
    isochronous channel, speed, and the size of header are not required for
    the mode. The helper function is used for the mode by character device
    driver instead of direct call of existent kernel API.
    
    The same goal can be achieved (in the ioctl_create_iso_context function)
    without this helper function as follows:
    - Call the fw_iso_context_create function passing NULL to the callback
      parameter.
    - Then setting the context->callback.sc or context->callback.mc
      variables based on the a->type value.
    
    However using the helper function created in this patch makes code more
    clear and declarative. This way avoid the call to a function with one
    purpose to achieved another one.
    Co-developed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Co-developed-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    Signed-off-by: default avatarOscar Carter <oscar.carter@gmx.com>
    Reviewed-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Testeb-by: Takashi Sakamoto<o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarGustavo A. R. Silva <gustavoars@kernel.org>
    ebe4560e
core-cdev.c 45.8 KB