Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp254184pxa; Tue, 11 Aug 2020 02:01:39 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwY+5p5Huf/jLTLgT9bwk/dj4osAfm6MCCVpzMZIQEmMpB7IjBPZHNo2P/I1q2s2ODdw66h X-Received: by 2002:a05:6402:b26:: with SMTP id bo6mr25108194edb.104.1597136499240; Tue, 11 Aug 2020 02:01:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1597136499; cv=none; d=google.com; s=arc-20160816; b=Hy+SmBw7qqIfACL5MaK3Mvkd5NF42q8ntHY5MdLQM1ckFXLgff75VETz/pzDX4R2OP Vc+ZKvdV2yJu7H6cMI9vUhZ7rxiOhYYuONd+7B8bnNUmygxAaHLG1mlE6JFCmTDjS9kR fbf+ckUzx8TAQ4R5OTyVMQ/FwSbm+Q5qtu89dbFrTmwojoYWsXye21ega49EHAQ4bTYw 1kuE9OkzjuTDVer+LITtZjS5YMj317v+Ja+0tHjrZuYAtPCNyePHJLTJIGGnoG9fax57 RjSkvVFT/SPQ+iAHq+826lCVi7tAJrKvE62IQk13WpP6bX95WTU0HhImywGeoSkwvT8/ RufQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:in-reply-to:content-disposition :mime-version:references:mail-followup-to:message-id:subject:cc:to :from:date:dkim-signature; bh=kI5qakFErIhAtlSahv1ie780vLsnJZJzRH85CVk9xkc=; b=HV3uyJKHnJST8iyRjG+YGDJpFGoeks5je87SH6zAavsK8GRW+bYbOoCAKtkl3CMDfR brPglscpHrAKff1ZABqij14zf7fimZDG/L2Py48y/N/lMIpmlS0xs7uCC0PUH3E5Os7y dA1YusM9+op+kgtHX7X2lD3XaPSi8NMTCaGnYqObIbGdrqG3R2yThEeQsGVzhT350V4v 5ybMngm/2BHjAJo+dso7kLbUVz16G6jf24HFkCyCKktz2B6lpC2f0pth7KmEZzHzjm64 NphdYqfZ83hujJJKzX2ERKyf5oqsGwjwGeT9m3NOwNgr3CohoIis9KPR+1eH9j2rE+/+ 0t+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=ZhqiEQB0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r20si12509846ejc.678.2020.08.11.02.01.14; Tue, 11 Aug 2020 02:01:39 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ffwll.ch header.s=google header.b=ZhqiEQB0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728371AbgHKI6e (ORCPT + 99 others); Tue, 11 Aug 2020 04:58:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56436 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728224AbgHKI6e (ORCPT ); Tue, 11 Aug 2020 04:58:34 -0400 Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D0F04C06174A for ; Tue, 11 Aug 2020 01:58:33 -0700 (PDT) Received: by mail-wm1-x343.google.com with SMTP id g8so1877681wmk.3 for ; Tue, 11 Aug 2020 01:58:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=date:from:to:cc:subject:message-id:mail-followup-to:references :mime-version:content-disposition:in-reply-to; bh=kI5qakFErIhAtlSahv1ie780vLsnJZJzRH85CVk9xkc=; b=ZhqiEQB0gxx0HMNGdIud33HXbwCcUGzAFvTEZOcnfrRehwjb8pJce47DxCS3Vpe/hO 0W/c/dlmjtWDghDUtpf+BYA89HTOVxVctUrjarY7zXxYNXIwVqSUqn6u4n2MAPyGdHzH dPBRBhHUwVzJsYQnp6o2LC1HI/cO4MqsXyKNA= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id :mail-followup-to:references:mime-version:content-disposition :in-reply-to; bh=kI5qakFErIhAtlSahv1ie780vLsnJZJzRH85CVk9xkc=; b=jMm1dv7Lzref0o1vPOyvtWiZay5JRG9aMR5Qswf5b8Rn8Guooc6jHVO2s41IWETsi7 n2pEoNKZZqT8XWtMAbNHEes7XAJXoRlFqVszFqGpcOKyNhwn+DU22wxtLXCDnxIerd6B q9/BS+ZYT3yeuK7AwEs0czj1obO/r2nq90TGeytl8ROAl583b2OVWQRXwSTk9uHBvo6n YJN84InIekKjck0BKGJeIWWcWJo290nrkBERAlWCWUF/PvcOXmBBz+U1uYW5BnT5vjnQ HBhfR44YFmv1A4TNlnH9/YSUJYn1I+t1gXMx4KZ9eRob4t4GeI7t7xhQ8gF4wKRkOQ0f VmJQ== X-Gm-Message-State: AOAM531bbnkTQp/P+6AgIovH836nbaM3weF8oSZmz9v0oqxTRv2NLqB/ Hi8Hm+3gHBd3Nmf2BWInBxfFfg== X-Received: by 2002:a1c:e244:: with SMTP id z65mr3067068wmg.34.1597136312570; Tue, 11 Aug 2020 01:58:32 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id g25sm3735876wmh.35.2020.08.11.01.58.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 11 Aug 2020 01:58:31 -0700 (PDT) Date: Tue, 11 Aug 2020 10:58:30 +0200 From: Daniel Vetter To: Zwane Mwaikambo Cc: tcamuso@redhat.com, dkwon@redhat.com, Linux Kernel , dri-devel@lists.freedesktop.org Subject: Re: [PATCH] drm: assure aux_dev is nonzero before using it Message-ID: <20200811085830.GZ2352366@phenom.ffwll.local> Mail-Followup-To: Zwane Mwaikambo , tcamuso@redhat.com, dkwon@redhat.com, Linux Kernel , dri-devel@lists.freedesktop.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Operating-System: Linux phenom 5.7.0-1-amd64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Aug 10, 2020 at 10:11:50AM -0700, Zwane Mwaikambo wrote: > Hi Folks, > I know this thread eventually dropped off due to not identifying > the underlying issue. It's still occuring on 5.8 and in my case it > happened because the udev device nodes for the DP aux devices were not > cleaned up whereas the kernel had no association with them. I can > reproduce the bug just by creating a device node for a non-existent minor > device and calling open(). Hm I don't have that thread anymore, but generally these bugs are solved by not registering the device before it's ready for use. We do have drm_connector->late_register for that stuff. Just a guess since I'm not seeing full details here. -Daniel > > To me it still makes sense to just check aux_dev because the chardev has > no way to check before calling. > > (gdb) list *drm_dp_aux_dev_get_by_minor+0x29 > 0x17b39 is in drm_dp_aux_dev_get_by_minor (drivers/gpu/drm/drm_dp_aux_dev.c:65). > 60 static struct drm_dp_aux_dev *drm_dp_aux_dev_get_by_minor(unsigned index) > 61 { > 62 struct drm_dp_aux_dev *aux_dev = NULL; > 63 > 64 mutex_lock(&aux_idr_mutex); > 65 aux_dev = idr_find(&aux_idr, index); > 66 if (!kref_get_unless_zero(&aux_dev->refcount)) > 67 aux_dev = NULL; > 68 mutex_unlock(&aux_idr_mutex); > 69 > (gdb) p/x &((struct drm_dp_aux_dev *)(0x0))->refcount > $8 = 0x18 > > static int auxdev_open(struct inode *inode, struct file *file) > { > unsigned int minor = iminor(inode); > struct drm_dp_aux_dev *aux_dev; > > aux_dev = drm_dp_aux_dev_get_by_minor(minor); > if (!aux_dev) > return -ENODEV; > > file->private_data = aux_dev; > return 0; > } > > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch