From owner-freebsd-bugs@freebsd.org Thu Aug 25 17:40:53 2016 Return-Path: Delivered-To: freebsd-bugs@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 23089BC69AC for ; Thu, 25 Aug 2016 17:40:53 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from kenobi.freebsd.org (kenobi.freebsd.org [IPv6:2001:1900:2254:206a::16:76]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id ECF3F1D5B for ; Thu, 25 Aug 2016 17:40:52 +0000 (UTC) (envelope-from bugzilla-noreply@freebsd.org) Received: from bugs.freebsd.org ([127.0.1.118]) by kenobi.freebsd.org (8.15.2/8.15.2) with ESMTP id u7PHeqKd054723 for ; Thu, 25 Aug 2016 17:40:52 GMT (envelope-from bugzilla-noreply@freebsd.org) From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 212156] Problem with camperiphunit() interpretation of device hints Date: Thu, 25 Aug 2016 17:40:53 +0000 X-Bugzilla-Reason: AssignedTo X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Base System X-Bugzilla-Component: kern X-Bugzilla-Version: 10.0-RELEASE X-Bugzilla-Keywords: X-Bugzilla-Severity: Affects Some People X-Bugzilla-Who: mbrian@netapp.com X-Bugzilla-Status: New X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: freebsd-bugs@FreeBSD.org X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version rep_platform op_sys bug_status bug_severity priority component assigned_to reporter Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: https://bugs.freebsd.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 25 Aug 2016 17:40:53 -0000 https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D212156 Bug ID: 212156 Summary: Problem with camperiphunit() interpretation of device hints Product: Base System Version: 10.0-RELEASE Hardware: Any OS: Any Status: New Severity: Affects Some People Priority: --- Component: kern Assignee: freebsd-bugs@FreeBSD.org Reporter: mbrian@netapp.com There's an issue with the way camperiphunit interprets device hints. First, I discovered this because the cam(4) documentation lists the hint name as: hint.da..unit when the code looks for: hint.da..lun (I've reported that separately). However, the code in cam_periph.c (camperiphunit()) does: for (wired =3D 0; resource_find_dev(&i, dname, &dunit, NULL, NULL) = =3D=3D 0; wired =3D 0) { if (resource_string_value(dname, dunit, "at", &strval) =3D= =3D 0) { if (strcmp(strval, pathbuf) !=3D 0) continue; wired++; } if (resource_int_value(dname, dunit, "target", &val) =3D=3D= 0) { if (val !=3D target) continue; wired++; } if (resource_int_value(dname, dunit, "lun", &val) =3D=3D 0)= { if (val !=3D lun) continue; wired++; } if (wired !=3D 0) { unit =3D dunit; break; } } This works correctly if all three hints exist and match. However, if one of the hints does not exist (since it has the wrong name), this code will still match. Then net result is that with several device that differ only by lun number, all will match the first set of hints and an attempt will be made to assign duplicate da unit numbers. I suspect that if (wired !=3D 0) should be if (wired =3D=3D3). --=20 You are receiving this mail because: You are the assignee for the bug.=