Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mailbox: stm32-ipcc: cast void pointers to unsigned long

Now that the driver can be enabled by COMPILE_TEST, we see warnings on
64bit platforms when void pointers are cast to unsigned int (and
vice versa).

warning: cast to smaller integer type 'unsigned int' from 'void *'
unsigned int chan = (unsigned int)link->con_priv;
...
warning: cast to 'void *' from smaller integer type 'unsigned int'
ipcc->controller.chans[i].con_priv = (void *)i;

Update these casts to use unsigned long variables, which are the same
size as pointers on all platforms.

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Martin Kaiser <martin@kaiser.cx>
Reviewed-by: Fabien Dessenne <fabien.dessenne@st.com>
Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>

authored by

Martin Kaiser and committed by
Jassi Brar
01790928 133af21f

+6 -6
+6 -6
drivers/mailbox/stm32-ipcc.c
··· 144 144 145 145 static int stm32_ipcc_send_data(struct mbox_chan *link, void *data) 146 146 { 147 - unsigned int chan = (unsigned int)link->con_priv; 147 + unsigned long chan = (unsigned long)link->con_priv; 148 148 struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc, 149 149 controller); 150 150 151 - dev_dbg(ipcc->controller.dev, "%s: chan:%d\n", __func__, chan); 151 + dev_dbg(ipcc->controller.dev, "%s: chan:%lu\n", __func__, chan); 152 152 153 153 /* set channel n occupied */ 154 154 stm32_ipcc_set_bits(&ipcc->lock, ipcc->reg_proc + IPCC_XSCR, ··· 163 163 164 164 static int stm32_ipcc_startup(struct mbox_chan *link) 165 165 { 166 - unsigned int chan = (unsigned int)link->con_priv; 166 + unsigned long chan = (unsigned long)link->con_priv; 167 167 struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc, 168 168 controller); 169 169 int ret; ··· 183 183 184 184 static void stm32_ipcc_shutdown(struct mbox_chan *link) 185 185 { 186 - unsigned int chan = (unsigned int)link->con_priv; 186 + unsigned long chan = (unsigned long)link->con_priv; 187 187 struct stm32_ipcc *ipcc = container_of(link->mbox, struct stm32_ipcc, 188 188 controller); 189 189 ··· 206 206 struct device_node *np = dev->of_node; 207 207 struct stm32_ipcc *ipcc; 208 208 struct resource *res; 209 - unsigned int i; 209 + unsigned long i; 210 210 int ret; 211 211 u32 ip_ver; 212 212 static const char * const irq_name[] = {"rx", "tx"}; ··· 265 265 irq_thread[i], IRQF_ONESHOT, 266 266 dev_name(dev), ipcc); 267 267 if (ret) { 268 - dev_err(dev, "failed to request irq %d (%d)\n", i, ret); 268 + dev_err(dev, "failed to request irq %lu (%d)\n", i, ret); 269 269 goto err_clk; 270 270 } 271 271 }