Commit 8a3918571a4eb3ae10ddd4aaec591b4af80d1172

Authored by Nicholas Bellinger
1 parent c3e5144271

target: Make core_scsi3_update_and_write_aptpl return sense_reason_t

Fix up sense_reason_t breakage in core_scsi3_update_and_write_aptpl()
from recent conversion to use local scope memory allocation.

Reported as sparse warnings: (new ones prefixed by >>) by Fengguang:

>> drivers/target/target_core_pr.c:2069:57: sparse: incorrect type in
>> return expression (different base types)
   drivers/target/target_core_pr.c:2069:57:    expected restricted sense_reason_t
   drivers/target/target_core_pr.c:2069:57:    got int
>> drivers/target/target_core_pr.c:2179:21: sparse: incorrect type in
>> assignment (different base types)
   drivers/target/target_core_pr.c:2179:21:    expected restricted sense_reason_t [assigned] [usertype] ret
   drivers/target/target_core_pr.c:2179:21:    got int
>> drivers/target/target_core_pr.c:2197:13: sparse: incorrect type in
>> assignment (different base types)
   drivers/target/target_core_pr.c:2197:13:    expected restricted sense_reason_t [assigned] [usertype] ret
   drivers/target/target_core_pr.c:2197:13:    got int
   drivers/target/target_core_pr.c:1245:28: sparse: context imbalance in '__core_scsi3_free_registration' - unexpected unlock

Reported-by: kbuild test robot <fengguang.wu@intel.com>
Cc: Andy Grover <agrover@redhat.com>
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>

Showing 1 changed file with 25 additions and 22 deletions Side-by-side Diff

drivers/target/target_core_pr.c
... ... @@ -1956,41 +1956,44 @@
1956 1956 * Clear the APTPL metadata if APTPL has been disabled, otherwise
1957 1957 * write out the updated metadata to struct file for this SCSI device.
1958 1958 */
1959   -static int core_scsi3_update_and_write_aptpl(struct se_device *dev, bool aptpl)
  1959 +static sense_reason_t core_scsi3_update_and_write_aptpl(struct se_device *dev, bool aptpl)
1960 1960 {
1961   - int ret = 0;
  1961 + unsigned char *buf;
  1962 + int rc;
1962 1963  
1963 1964 if (!aptpl) {
1964 1965 char *null_buf = "No Registrations or Reservations\n";
1965 1966  
1966   - ret = __core_scsi3_write_aptpl_to_file(dev, null_buf);
  1967 + rc = __core_scsi3_write_aptpl_to_file(dev, null_buf);
1967 1968 dev->t10_pr.pr_aptpl_active = 0;
1968 1969 pr_debug("SPC-3 PR: Set APTPL Bit Deactivated\n");
1969   - } else {
1970   - int ret;
1971   - unsigned char *buf;
1972 1970  
1973   - buf = kzalloc(PR_APTPL_BUF_LEN, GFP_KERNEL);
1974   - if (!buf)
1975   - return -ENOMEM;
  1971 + if (rc)
  1972 + return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
1976 1973  
1977   - ret = core_scsi3_update_aptpl_buf(dev, buf, PR_APTPL_BUF_LEN);
1978   - if (ret < 0) {
1979   - kfree(buf);
1980   - return ret;
1981   - }
  1974 + return 0;
  1975 + }
1982 1976  
1983   - ret = __core_scsi3_write_aptpl_to_file(dev, buf);
1984   - if (ret != 0) {
1985   - pr_err("SPC-3 PR: Could not update APTPL\n");
1986   - } else {
1987   - dev->t10_pr.pr_aptpl_active = 1;
1988   - pr_debug("SPC-3 PR: Set APTPL Bit Activated\n");
1989   - }
  1977 + buf = kzalloc(PR_APTPL_BUF_LEN, GFP_KERNEL);
  1978 + if (!buf)
  1979 + return TCM_OUT_OF_RESOURCES;
  1980 +
  1981 + rc = core_scsi3_update_aptpl_buf(dev, buf, PR_APTPL_BUF_LEN);
  1982 + if (rc < 0) {
1990 1983 kfree(buf);
  1984 + return TCM_OUT_OF_RESOURCES;
1991 1985 }
1992 1986  
1993   - return ret;
  1987 + rc = __core_scsi3_write_aptpl_to_file(dev, buf);
  1988 + if (rc != 0) {
  1989 + pr_err("SPC-3 PR: Could not update APTPL\n");
  1990 + kfree(buf);
  1991 + return TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE;
  1992 + }
  1993 + dev->t10_pr.pr_aptpl_active = 1;
  1994 + kfree(buf);
  1995 + pr_debug("SPC-3 PR: Set APTPL Bit Activated\n");
  1996 + return 0;
1994 1997 }
1995 1998  
1996 1999 static sense_reason_t