Showing error 1819

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/mfd/htc-pasic3.c
Line in file: 215
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

185
186        r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
187        if (!r)
188                return -ENXIO;
189
190        if (!request_mem_region(r->start, r->end - r->start + 1, "pasic3"))
191                return -EBUSY;
192
193        asic = kzalloc(sizeof(struct pasic3_data), GFP_KERNEL);
194        if (!asic)
195                return -ENOMEM;
196
197        platform_set_drvdata(pdev, asic);
198
199        if (pdata && pdata->bus_shift)
200                asic->bus_shift = pdata->bus_shift;
201        else
202                asic->bus_shift = 2;
203
204        asic->mapping = ioremap(r->start, r->end - r->start + 1);
205        if (!asic->mapping) {
206                dev_err(dev, "couldn't ioremap PASIC3\n");
207                kfree(asic);
208                return -ENOMEM;
209        }
210
211        ret = ds1wm_device_add(pdev, asic->bus_shift);
212        if (ret < 0)
213                dev_warn(dev, "failed to register DS1WM\n");
214
215        if (pdata->led_pdata) {
216                ret = led_device_add(dev, pdata->led_pdata);
217                if (ret < 0)
218                        dev_warn(dev, "failed to register LED device\n");
219        }
220
221        return 0;
222}
223
224static int pasic3_remove(struct platform_device *pdev)
225{
Show full sources