Received: by 10.223.176.5 with SMTP id f5csp136952wra; Mon, 5 Feb 2018 18:26:01 -0800 (PST) X-Google-Smtp-Source: AH8x2243CvtMj4TzE9OS0yl+9saugDism6hlOoBUrPRC912h2iAvVsVlC6Q/lRTgGpm1gzkbY6mC X-Received: by 2002:a17:902:203:: with SMTP id 3-v6mr836227plc.413.1517883961358; Mon, 05 Feb 2018 18:26:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517883961; cv=none; d=google.com; s=arc-20160816; b=b/+BFyEs0WmAUSesZXcI8s0KzteFOmAnGpE6y+23HbAOvhQyGcSKmgOlvlkRyjrfQG VWPNyiJ/1munYKA6hqb8RHbGRsqkpG6eSALobR4V/IIrrioeYHznc35pZLWmH9bFrlkN 9XvlnYYOZQcdr8E/ifEEbbdi34BTtsKWMlJjD5FLO/FUJHJvX8b/rL4Ssu2dAWX99NbS I24XKMw9s9HQhaqxbeM3Dkf7qc4u7ch1bGHjpjGSnuwXVV3xJxsv3YXDZI872bkJrNm/ B5CFpQsSMQJlQ814GAM2qcyQSGYDXcmz1wr9OLjfBhC9L8yzD4BMcn0XgW54LA6P9Mkd TnVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:message-id:date:cc:to:from:subject :arc-authentication-results; bh=HZhqYiJY62N6lMqvHyC2I2DpmboRIaTfAkcVO5muy0I=; b=bXQesaAyxz+hfLAZoz5Dak9T2XNwEGckwh9AsCV35Ku6TPSBGiqSUN2W8e7uL8OSG1 elDKU+R6xnnyL7KIiooYMCvxn3GHtI8KkgkrKFGwrEMRce+guN4B2es371mmIYb/CFSk twxw+BHgW9ZWHaE0qqw8WszJHLkrtlm4F2oyYiLewvjIBSU+Hk9zB/1y8qTH3ZeF3x0u F+YjNO0F6hDFLPy66kkcW0YFDqHtkRRj0JbD0Omxk3XGc8idkltm+GC3GJH2bXyA+iKT D5lzVMS8tJXDkpyIYRXTWCOF6KH8mx9HIKrwCZeg3pHsHIF3cKTlpgIINIR5Utm2GJp3 I6Ig== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=csail.mit.edu Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 1-v6si709255plx.93.2018.02.05.18.25.46; Mon, 05 Feb 2018 18:26:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=csail.mit.edu Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752501AbeBFCZW (ORCPT + 99 others); Mon, 5 Feb 2018 21:25:22 -0500 Received: from outgoing-stata.csail.mit.edu ([128.30.2.210]:44241 "EHLO outgoing-stata.csail.mit.edu" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752069AbeBFCZR (ORCPT ); Mon, 5 Feb 2018 21:25:17 -0500 Received: from 67-148-5-85.dia.static.qwest.net ([67.148.5.85] helo=[127.0.1.1]) by outgoing-stata.csail.mit.edu with esmtpsa (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.82) (envelope-from ) id 1eiswZ-000R0f-NJ; Mon, 05 Feb 2018 21:25:11 -0500 Subject: [PATCH 1/2] char_dev: Fix off-by-one bugs in find_dynamic_major() From: "Srivatsa S. Bhat" To: gregkh@linuxfoundation.org, logang@deltatee.com Cc: axboe@kernel.dk, jlayton@poochiereds.net, bfields@fieldses.org, viro@zeniv.linux.org.uk, linux-fsdevel@vger.kernel.org, linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, srivatsa@csail.mit.edu Date: Mon, 05 Feb 2018 18:25:09 -0800 Message-ID: <151788389652.28069.6065922071875812126.stgit@srivatsa-ubuntu> User-Agent: StGit/0.18 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Srivatsa S. Bhat CHRDEV_MAJOR_DYN_END and CHRDEV_MAJOR_DYN_EXT_END are valid major numbers. So fix the loop iteration to include them in the search for free major numbers. While at it, also remove a redundant if condition ("cd->major != i"), as it will never be true. Signed-off-by: Srivatsa S. Bhat --- fs/char_dev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fs/char_dev.c b/fs/char_dev.c index a65e4a5..33c9385 100644 --- a/fs/char_dev.c +++ b/fs/char_dev.c @@ -67,18 +67,18 @@ static int find_dynamic_major(void) int i; struct char_device_struct *cd; - for (i = ARRAY_SIZE(chrdevs)-1; i > CHRDEV_MAJOR_DYN_END; i--) { + for (i = ARRAY_SIZE(chrdevs)-1; i >= CHRDEV_MAJOR_DYN_END; i--) { if (chrdevs[i] == NULL) return i; } for (i = CHRDEV_MAJOR_DYN_EXT_START; - i > CHRDEV_MAJOR_DYN_EXT_END; i--) { + i >= CHRDEV_MAJOR_DYN_EXT_END; i--) { for (cd = chrdevs[major_to_index(i)]; cd; cd = cd->next) if (cd->major == i) break; - if (cd == NULL || cd->major != i) + if (cd == NULL) return i; }