drivers: misc: ti-st: Use int instead of fuzzy char for callback status

On mips and parisc:

    drivers/bluetooth/btwilink.c: In function 'ti_st_open':
    drivers/bluetooth/btwilink.c:174:21: warning: overflow in implicit constant conversion [-Woverflow]
       hst->reg_status = -EINPROGRESS;

    drivers/nfc/nfcwilink.c: In function 'nfcwilink_open':
    drivers/nfc/nfcwilink.c:396:31: warning: overflow in implicit constant conversion [-Woverflow]
      drv->st_register_cb_status = -EINPROGRESS;

There are actually two issues:
  1. Whether "char" is signed or unsigned depends on the architecture.
     As the completion callback data is used to pass a (negative) error
     code, it should always be signed.
  2. EINPROGRESS is 150 on mips, 245 on parisc.
     Hence -EINPROGRESS doesn't fit in a signed 8-bit number.

Change the callback status from "char" to "int" to fix these.

Signed-off-by: Geert Uytterhoeven <[email protected]>
Acked-by: Mauro Carvalho Chehab <[email protected]>
Acked-by: Samuel Ortiz <[email protected]>
Signed-off-by: Marcel Holtmann <[email protected]>
This commit is contained in:
Geert Uytterhoeven 2016-06-06 11:02:03 +02:00 • committed by Marcel Holtmann
commit 4360fa22ad
5 changed files with 7 additions and 7 deletions

View file

@ -51,7 +51,7 @@
*/
struct ti_st {
struct hci_dev *hdev;
char reg_status;
int reg_status;
long (*st_write) (struct sk_buff *);
struct completion wait_reg_completion;
};
@ -83,7 +83,7 @@ static inline void ti_st_tx_complete(struct ti_st *hst, int pkt_type)
* status.ti_st_open() function will wait for signal from this
* API when st_register() function returns ST_PENDING.
*/
static void st_reg_completion_cb(void *priv_data, char data)
static void st_reg_completion_cb(void *priv_data, int data)
{
struct ti_st *lhst = priv_data;