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

rtc: rtc-rs5c372: fix up NULL name in transfer error path

rs5c_get_regs() currently uses rs5c->rtc->name for its debug printk when
i2c_transfer() fails, though it is used several times before the rtc dev
has been registered. The earliest we can get at the symbolic name is via
the i2c client's struct device, which can be handled by moving the first
rs5c_get_regs() until after the client pointer is assigned.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Cc: David Brownell <david-b@pacbell.net>
Cc: Alessandro Zummo <a.zummo@towertech.it>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Paul Mundt and committed by
Linus Torvalds
e2bfe342 e275ac47

+4 -4
+4 -4
drivers/rtc/rtc-rs5c372.c
··· 99 99 * least 80219 chips; this works around that bug. 100 100 */ 101 101 if ((i2c_transfer(client->adapter, msgs, 1)) != 1) { 102 - pr_debug("%s: can't read registers\n", rs5c->rtc->name); 102 + dev_warn(&client->dev, "can't read registers\n"); 103 103 return -EIO; 104 104 } 105 105 ··· 512 512 goto exit; 513 513 } 514 514 515 - /* we read registers 0x0f then 0x00-0x0f; skip the first one */ 516 - rs5c372->regs=&rs5c372->buf[1]; 517 - 518 515 rs5c372->client = client; 519 516 i2c_set_clientdata(client, rs5c372); 517 + 518 + /* we read registers 0x0f then 0x00-0x0f; skip the first one */ 519 + rs5c372->regs = &rs5c372->buf[1]; 520 520 521 521 err = rs5c_get_regs(rs5c372); 522 522 if (err < 0)