lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Date:	Wed, 3 Apr 2013 12:10:16 +1100
From:	Stephen Rothwell <sfr@...b.auug.org.au>
To:	Mauro Carvalho Chehab <mchehab@...radead.org>
Cc:	linux-next@...r.kernel.org, linux-kernel@...r.kernel.org,
	Lars-Peter Clausen <lars@...afoo.de>,
	Wolfram Sang <wsa@...-dreams.de>,
	Hans Verkuil <hans.verkuil@...co.com>
Subject: linux-next: manual merge of the v4l-dvb tree with the 2c tree

Hi Mauro,

Today's linux-next merge of the v4l-dvb tree got a conflict in
drivers/staging/media/go7007/go7007-driver.c between commit bf51a8c5e0b6
("i2c: Ignore return value of i2c_del_adapter()") from the i2c tree and
commit d5d3a7cc127d ("[media] go7007: fix unregister/disconnect
handling") from the v4l-dvb tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    sfr@...b.auug.org.au

diff --cc drivers/staging/media/go7007/go7007-driver.c
index 6f83c52,a5ca99d..0000000
--- a/drivers/staging/media/go7007/go7007-driver.c
+++ b/drivers/staging/media/go7007/go7007-driver.c
@@@ -201,13 -208,50 +208,47 @@@ static int init_i2c_module(struct i2c_a
  {
  	struct go7007 *go = i2c_get_adapdata(adapter);
  	struct v4l2_device *v4l2_dev = &go->v4l2_dev;
- 
- 	if (v4l2_i2c_new_subdev(v4l2_dev, adapter, type, addr, NULL))
+ 	struct v4l2_subdev *sd;
+ 	struct i2c_board_info info;
+ 
+ 	memset(&info, 0, sizeof(info));
+ 	strlcpy(info.type, i2c->type, sizeof(info.type));
+ 	info.addr = i2c->addr;
+ 	info.flags = i2c->flags;
+ 
+ 	sd = v4l2_i2c_new_subdev_board(v4l2_dev, adapter, &info, NULL);
+ 	if (sd) {
+ 		if (i2c->is_video)
+ 			go->sd_video = sd;
+ 		if (i2c->is_audio)
+ 			go->sd_audio = sd;
  		return 0;
+ 	}
+ 
+ 	printk(KERN_INFO "go7007: probing for module i2c:%s failed\n", i2c->type);
+ 	return -EINVAL;
+ }
+ 
+ /*
+  * Detach and unregister the encoder.  The go7007 struct won't be freed
+  * until v4l2 finishes releasing its resources and all associated fds are
+  * closed by applications.
+  */
+ static void go7007_remove(struct v4l2_device *v4l2_dev)
+ {
+ 	struct go7007 *go = container_of(v4l2_dev, struct go7007, v4l2_dev);
+ 
+ 	v4l2_device_unregister(v4l2_dev);
+ 	if (go->hpi_ops->release)
+ 		go->hpi_ops->release(go);
+ 	if (go->i2c_adapter_online) {
 -		if (i2c_del_adapter(&go->i2c_adapter) == 0)
 -			go->i2c_adapter_online = 0;
 -		else
 -			v4l2_err(&go->v4l2_dev,
 -				"error removing I2C adapter!\n");
++		i2c_del_adapter(&go->i2c_adapter);
++		go->i2c_adapter_online = 0;
+ 	}
  
- 	dev_info(&adapter->dev,
- 		 "go7007: probing for module i2c:%s failed\n", type);
- 	return -1;
+ 	kfree(go->boot_fw);
+ 	go7007_v4l2_remove(go);
+ 	kfree(go);
  }
  
  /*

Content of type "application/pgp-signature" skipped

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ