diff options
Diffstat (limited to 'drivers/base/devcoredump.c')
| -rw-r--r-- | drivers/base/devcoredump.c | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/drivers/base/devcoredump.c b/drivers/base/devcoredump.c index 9243468e2c99..8eec0e0ddff7 100644 --- a/drivers/base/devcoredump.c +++ b/drivers/base/devcoredump.c @@ -202,7 +202,7 @@ static int devcd_match_failing(struct device *dev, const void *failing)   * NOTE: if two tables allocated with devcd_alloc_sgtable and then chained   * using the sg_chain function then that function should be called only once   * on the chained table - * @table: pointer to sg_table to free + * @data: pointer to sg_table to free   */  static void devcd_free_sgtable(void *data)  { @@ -210,7 +210,7 @@ static void devcd_free_sgtable(void *data)  }  /** - * devcd_read_from_table - copy data from sg_table to a given buffer + * devcd_read_from_sgtable - copy data from sg_table to a given buffer   * and return the number of bytes read   * @buffer: the buffer to copy the data to it   * @buf_len: the length of the buffer @@ -292,13 +292,16 @@ void dev_coredumpm(struct device *dev, struct module *owner,  	if (device_add(&devcd->devcd_dev))  		goto put_device; +	/* +	 * These should normally not fail, but there is no problem +	 * continuing without the links, so just warn instead of +	 * failing. +	 */  	if (sysfs_create_link(&devcd->devcd_dev.kobj, &dev->kobj, -			      "failing_device")) -		/* nothing - symlink will be missing */; - -	if (sysfs_create_link(&dev->kobj, &devcd->devcd_dev.kobj, -			      "devcoredump")) -		/* nothing - symlink will be missing */; +			      "failing_device") || +	    sysfs_create_link(&dev->kobj, &devcd->devcd_dev.kobj, +		              "devcoredump")) +		dev_warn(dev, "devcoredump create_link failed\n");  	INIT_DELAYED_WORK(&devcd->del_wk, devcd_del);  	schedule_delayed_work(&devcd->del_wk, DEVCD_TIMEOUT); | 
